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 gcc/ChangeLog: * config.gcc: Add arm-mve-builtins.o to extra_objs for arm-*-*-* targets. * config/arm/arm-c.c (arm_pragma_arm): Handle new pragma. (arm_register_target_pragmas): Register new pragma. * config/arm/arm-protos.h: Add arm_mve namespace and declare arm_handle_mve_types_h. * config/arm/arm_mve_types.h: Replace MVE type definitions with new pragma. * config/arm/t-arm: Add arm-mve-builtins.o target. * 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.