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.