Hi All, This patch series relies upon my C++ frontend patch series. I have uploaded both series to the Forgejo instance (https://forge.sourceware.org/alfie.richards/gcc-TEST/pulls/1) both to have a public remote branch to easily pull from and to allow reviews on there is so desired.
This series adds support for target_version attribute in the C frontend for the targets which set TARGET_HAS_FMV_TARGET_ATTRIBUTE to false. (Currently Aarch64 and riscv.) This differs from my attempt to add target_version support previously as the ACLE rules were updated to specify the scope and signature of the function set to be that of the default version. This simplifies many of the edge cases previously we were dealing with and allows using the default decl to represent the whole set. (Previously I used the dispatched symbol creating significant complexity). This has all been bootstrapped and regression tested on aarch64-linux-gnu and x86_64-linux-gnu. This is targeting GCC 16 stage 1. Kind regards, Alfie Richards Alfie Richards (2): c: Add target_version attribute support. c: Improve diagnostics for C FMV declaration conflicts. gcc/c/c-decl.cc | 144 +++++++++++++++++- gcc/testsuite/gcc.target/aarch64/mv-1.c | 43 ++++++ .../gcc.target/aarch64/mv-and-mvc-error1.c | 9 ++ .../gcc.target/aarch64/mv-and-mvc-error2.c | 9 ++ .../gcc.target/aarch64/mv-and-mvc-error3.c | 8 + .../gcc.target/aarch64/mv-and-mvc1.c | 37 +++++ .../gcc.target/aarch64/mv-and-mvc2.c | 28 ++++ .../gcc.target/aarch64/mv-and-mvc3.c | 40 +++++ .../gcc.target/aarch64/mv-and-mvc4.c | 37 +++++ gcc/testsuite/gcc.target/aarch64/mv-error1.c | 18 +++ gcc/testsuite/gcc.target/aarch64/mv-error2.c | 9 ++ gcc/testsuite/gcc.target/aarch64/mv-error3.c | 12 ++ gcc/testsuite/gcc.target/aarch64/mv-error4.c | 9 ++ gcc/testsuite/gcc.target/aarch64/mv-error5.c | 8 + gcc/testsuite/gcc.target/aarch64/mv-error6.c | 20 +++ gcc/testsuite/gcc.target/aarch64/mv-error7.c | 11 ++ gcc/testsuite/gcc.target/aarch64/mv-error8.c | 12 ++ gcc/testsuite/gcc.target/aarch64/mv-error9.c | 12 ++ .../gcc.target/aarch64/mv-symbols1.c | 38 +++++ .../gcc.target/aarch64/mv-symbols10.c | 42 +++++ .../gcc.target/aarch64/mv-symbols11.c | 16 ++ .../gcc.target/aarch64/mv-symbols12.c | 27 ++++ .../gcc.target/aarch64/mv-symbols13.c | 28 ++++ .../gcc.target/aarch64/mv-symbols2.c | 28 ++++ .../gcc.target/aarch64/mv-symbols3.c | 27 ++++ .../gcc.target/aarch64/mv-symbols4.c | 31 ++++ .../gcc.target/aarch64/mv-symbols5.c | 36 +++++ .../gcc.target/aarch64/mv-symbols6.c | 20 +++ .../gcc.target/aarch64/mv-symbols7.c | 47 ++++++ .../gcc.target/aarch64/mv-symbols8.c | 47 ++++++ .../gcc.target/aarch64/mv-symbols9.c | 44 ++++++ gcc/testsuite/gcc.target/aarch64/mvc-error1.c | 9 ++ gcc/testsuite/gcc.target/aarch64/mvc-error2.c | 9 ++ .../gcc.target/aarch64/mvc-symbols1.c | 25 +++ .../gcc.target/aarch64/mvc-symbols2.c | 15 ++ .../gcc.target/aarch64/mvc-symbols3.c | 19 +++ .../gcc.target/aarch64/mvc-symbols4.c | 12 ++ .../gcc.target/aarch64/mvc-warning1.c | 13 ++ 38 files changed, 993 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error5.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error6.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error7.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error9.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols10.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols11.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols12.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols13.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols5.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols6.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols7.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols9.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-error1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-error2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-warning1.c -- 2.34.1