[gcc/gcc-TEST] #49 FMV refactor and ACLE compliance for C++

Claudio Bantaloukas claudio.bantaloukas@arm.com
Tue Jun 24 13:54:16 GMT 2025


Created on: 2025-04-03 12:06:42+00:00
Latest update: 2025-05-21 13:56:44+00:00
Author: alfierichards@sourceware.org
Changes: 93 changed files, 2727 additions, 922 deletions
Head revision: alfie.richards/gcc-TEST ref fmv_cxx commit b47c31eaa3f42a720b635b4dc050959703ca82c5
Base revision: gcc/gcc-TEST ref master commit 97044a47de533f2a9b3fc864e5ea318e53979079 r16-648-gf99017c3125f44
Merge base: f99017c3125f4400cf6a098cf5b33d32fe3e6645
Full diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/49.diff
Discussion:  https://forge.sourceware.org/gcc/gcc-TEST/pulls/49
Requested Reviewers: rsandifo, rearnsha

Another update to this series.

This patch changes the version info structure to be sorted by
priority. This allows easier reasoning for optimisations and prevents having to
calculate the priority of functions repeatedly.

The other change is that the target_clones pass was split in two. This is
because the target_clones pass now dispatches the target_versions and
target_clones, and different versions may have arbitrarily idfferent bodies.
Therefore, allowing passes like efvp before dispatching made some invalid
optimisations.
However, as Alice Carlotti (alice.carlotti@arm.com) pointed out offline, the
target_clones pass was likely put in this position late as for target_clones
it is valid, as all the versions have the same body.
So I split it in two. In the early stage complicated cases where there are
multiple decls are expanded and dispatched. In the later stages, the simple
case of a lone target_clones decl is dispatched (as is always the case
for TARGET_HAS_FMV_TARGET_ATTRIBUTE targets).

Regression tested and bootstrapped for aarch64-none-linux-gnu
and x86_64-unknown-linux-gnu.

Cross compiled and checked FMV tests for riscv and powerpc.

Hoping for GCC16 stage 1 for this.

Change log
==========

V4:
- Changed version_info structure to be sorted by priority
- Split the target_clones pass into early/late stages
- Split out fix for PR c++/119498

V3: https://gcc.gnu.org/pipermail/gcc-patches/2025-March/679488.html
- Added reject target_clones version logic and hook
- Added pretty print for string_slice
- Refactored merging and conflict logic in front end
- Improved diagnostics

V2: https://gcc.gnu.org/pipermail/gcc-patches/2025-February/675960.html
- Changed recording of assembly name to be done in version into initialisation
- Changed behaviour for a lone default decl

V1: https://gcc.gnu.org/pipermail/gcc-patches/2025-February/674973.htmlhttps://gcc.gnu.org/pipermail/gcc-patches/2025-February/674973.html
- Initial

Changed files:
- M: gcc/attribs.cc
- M: gcc/attribs.h
- M: gcc/c-family/c-attribs.cc
- M: gcc/c-family/c-format.cc
- M: gcc/c-family/c-format.h
- M: gcc/cgraph.cc
- M: gcc/cgraph.h
- M: gcc/cgraphclones.cc
- M: gcc/cgraphunit.cc
- M: gcc/config/aarch64/aarch64.cc
- M: gcc/config/aarch64/aarch64.opt
- M: gcc/config/i386/i386-features.cc
- M: gcc/config/riscv/riscv-protos.h
- M: gcc/config/riscv/riscv-target-attr.cc
- M: gcc/config/riscv/riscv.cc
- M: gcc/config/rs6000/rs6000.cc
- M: gcc/cp/call.cc
- M: gcc/cp/class.cc
- M: gcc/cp/cp-gimplify.cc
- M: gcc/cp/cp-tree.h
- M: gcc/cp/decl.cc
- M: gcc/cp/decl2.cc
- M: gcc/cp/typeck.cc
- M: gcc/doc/invoke.texi
- M: gcc/doc/tm.texi
- M: gcc/doc/tm.texi.in
- M: gcc/hooks.cc
- M: gcc/hooks.h
- M: gcc/ipa.cc
- M: gcc/multiple_target.cc
- M: gcc/passes.def
- M: gcc/pretty-print.cc
- M: gcc/target.def
- M: gcc/testsuite/g++.target/aarch64/mv-1.C
- D: gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C
- D: gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C
- D: gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C
- D: gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C
- D: gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C
- D: gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C
- D: gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C
- D: gcc/testsuite/g++.target/aarch64/mv-error1.C
- D: gcc/testsuite/g++.target/aarch64/mv-error2.C
- D: gcc/testsuite/g++.target/aarch64/mv-error3.C
- D: gcc/testsuite/g++.target/aarch64/mv-error4.C
- D: gcc/testsuite/g++.target/aarch64/mv-error5.C
- D: gcc/testsuite/g++.target/aarch64/mv-error6.C
- D: gcc/testsuite/g++.target/aarch64/mv-error7.C
- D: gcc/testsuite/g++.target/aarch64/mv-error8.C
- M: gcc/testsuite/g++.target/aarch64/mv-pragma.C
- M: gcc/testsuite/g++.target/aarch64/mv-symbols1.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols10.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols11.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols12.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols13.C
- M: gcc/testsuite/g++.target/aarch64/mv-symbols2.C
- M: gcc/testsuite/g++.target/aarch64/mv-symbols3.C
- M: gcc/testsuite/g++.target/aarch64/mv-symbols4.C
- M: gcc/testsuite/g++.target/aarch64/mv-symbols5.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols6.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols7.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols8.C
- D: gcc/testsuite/g++.target/aarch64/mv-symbols9.C
- A: gcc/testsuite/g++.target/aarch64/mv-warning1.C
- D: gcc/testsuite/g++.target/aarch64/mvc-error1.C
- D: gcc/testsuite/g++.target/aarch64/mvc-error2.C
- M: gcc/testsuite/g++.target/aarch64/mvc-symbols1.C
- M: gcc/testsuite/g++.target/aarch64/mvc-symbols2.C
- M: gcc/testsuite/g++.target/aarch64/mvc-symbols3.C
- M: gcc/testsuite/g++.target/aarch64/mvc-symbols4.C
- M: gcc/testsuite/g++.target/aarch64/mvc-warning1.C
- D: gcc/testsuite/g++.target/i386/mv-symbols1.C
- D: gcc/testsuite/g++.target/i386/mv-symbols2.C
- D: gcc/testsuite/g++.target/i386/mv-symbols3.C
- D: gcc/testsuite/g++.target/i386/mv-symbols4.C
- D: gcc/testsuite/g++.target/i386/mv-symbols5.C
- D: gcc/testsuite/g++.target/i386/mvc-symbols1.C
- D: gcc/testsuite/g++.target/i386/mvc-symbols2.C
- D: gcc/testsuite/g++.target/i386/mvc-symbols3.C
- D: gcc/testsuite/g++.target/i386/mvc-symbols4.C
- D: gcc/testsuite/g++.target/powerpc/mvc-symbols1.C
- D: gcc/testsuite/g++.target/powerpc/mvc-symbols2.C
- D: gcc/testsuite/g++.target/powerpc/mvc-symbols3.C
- D: gcc/testsuite/g++.target/powerpc/mvc-symbols4.C
- M: gcc/testsuite/g++.target/riscv/mv-symbols2.C
- M: gcc/testsuite/g++.target/riscv/mv-symbols3.C
- M: gcc/testsuite/g++.target/riscv/mv-symbols4.C
- M: gcc/testsuite/g++.target/riscv/mv-symbols5.C
- M: gcc/testsuite/g++.target/riscv/mvc-symbols3.C
- M: gcc/tree.cc
- M: gcc/tree.h
- M: gcc/vec.cc
- M: gcc/vec.h
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


More information about the Test-list mailing list