On 25/11/2021 09:42, Murray Steele via Gcc-patches wrote:
Changes from original patch:

1. Merged test_redef_* test files into one
2. Encapsulated contents of arm-mve-builtins.h in namespace arm_mve (missed
    in initial patch).
3. Added extern declarations for scalar_types and acle_vector types to
    arm-mve-builtins.h (missed in initial patch).
4. Added arm-mve-builtins.(cc|h) to gt_targets for arm-*-*-* (missed in
    initial patch).
5. Added include for gt-arm-mve-builtins.h to arm-mve-builtins.cc (missed in
    initial patch).
6. Removed explicit initialisation of handle_arm_mve_types_p as it is unneeded.

---

This patch moves the implementation of MVE ACLE types from
arm_mve_types.h to inside GCC via a new pragma, which replaces the prior
type definitions. This allows for the types to be used internally for
intrinsic function definitions.

Bootstrapped and regression tested on arm-none-linux-gnuabihf, and
regression tested on arm-eabi -- no issues.

Thanks,
Murray


Nearly there, but...

Your changelog entry needs some work:

gcc/ChangeLog:

         * config.gcc: Add arm-mve-builtins.o to extra_objs for arm-*-*-*
         targets.

 * config.gcc (arm*-*-*): Add arm-mve-builtins.o to extra_objs.

         * config/arm/arm-c.c (arm_pragma_arm): Handle new pragma.

 ... Handle "#pragma GCC arm".

         (arm_register_target_pragmas): Register new pragma.
 ... Register it.

         * config/arm/arm-protos.h: Add arm_mve namespace and declare
         arm_handle_mve_types_h.

 ...arm-protos.h (arm_mve::arm_handle_mve_types.h): New prototype.

         * config/arm/arm_mve_types.h: Replace MVE type definitions with
         new pragma.
         * config/arm/t-arm: Add arm-mve-builtins.o target.

.../t-arm (arm-mve-builtins.o): New target rule.

         * config/arm/arm-mve-builtins.cc: New file.
         * config/arm/arm-mve-builtins.def: New file.
         * config/arm/arm-mve-builtins.h: New file.

gcc/testsuite/ChangeLog:

         * gcc.target/arm/mve/mve.exp: Add new subdirectories.
         * gcc.target/arm/mve/general-c/type_redef_1.c: New test.
         * gcc.target/arm/mve/general/double_pragmas_1.c: New test.
         * gcc.target/arm/mve/general/nomve_1.c: New test.



diff --git a/gcc/config/arm/arm-mve-builtins.def b/gcc/config/arm/arm-mve-builtins.def
new file mode 100644
index 0000000000000000000000000000000000000000..02a46bec3e4cba6add9bce4021c732e15aa8b012
--- /dev/null
+++ b/gcc/config/arm/arm-mve-builtins.def
@@ -0,0 +1,41 @@

+#ifndef DEF_MVE_TYPE
+#define DEF_MVE_TYPE(A, B)
+#endif

When would this file ever be included when this macro wasn't defined? Better to require the caller to define this by using #error if it's missing.

then...

+
+#undef DEF_MVE_TYPE

This isn't needed anymore, because caller should undef it after use.

diff --git a/gcc/config/arm/arm-mve-builtins.cc b/gcc/config/arm/arm-mve-builtins.cc
new file mode 100644
index 0000000000000000000000000000000000000000..99ddc8d49aad39e057c1c0d349c6c02c278553d6
--- /dev/null
+++ b/gcc/config/arm/arm-mve-builtins.cc

...
+}
+
+}
+
+using namespace arm_mve;

Add a comment that this is the end of the earlier namespace declaration.

diff --git a/gcc/config/arm/arm-mve-builtins.h b/gcc/config/arm/arm-mve-builtins.h
new file mode 100644
index 0000000000000000000000000000000000000000..c165ce6997b4560fc87626be4bbaa0e8afcbbfed
--- /dev/null
+++ b/gcc/config/arm/arm-mve-builtins.h
@@ -0,0 +1,41 @@


...
+}
+

Likewise.

R.

Reply via email to