Hello all,

Thank you for the feedback.

There are some minor changes for this version:

* Correctly attributed the symbol test patches to Andrew Calotti.
* Changed the recording of the assembly name to be done by
  insert_new_function_version. To me this seems a much more natural time to
  do this, as it's where the function_version_info structure is being
  initialized. It also avoids unnecessary early creation of cgraph structures
  which was causing issues.
* Change the handling of a lone "default" annotated function definition to
  be mangled and emit an alias from dispatched symbol to the default function
  (as discussed with Richard Sandiford).
* Addressed additional Richard Sandifords comments.
* Merged the removal of target_clone splitting code into the refactor of naming
  mostly to avoid unused function warnings causing the build to fail.

This has again be regression tested and bootstrapped for aarch64-none-linux-gnu
and x86_64-unknown-linux-gnu (more thoroughly this time).
Cross compiled and for the FMV tests for riscv and powerpc.

Kind regards,
Alfie Richards

Alfie Richards (14):
  Add string_slice class.
  Remove unnecessary `record` argument from maybe_version_functions.
  Update is_function_default_version to work with target_version.
  Change function versions to be implicitly ordered.
  Add version of make_attribute supporting string_slice.
  Add get_clone_versions function.
  Add assembler_name to cgraph_function_version_info.
  Add dispatcher_resolver_function and is_target_clone to cgraph_node.
  Add clone_identifier function.
  Refactor FMV name mangling.
  Change target_version semantics to follow ACLE specification.
  Support mixing of target_clones and target_version for aarch64.
  Add error cases and tests for Aarch64 FMV.
  Remove FMV beta warning.

Andrew Carlotti (2):
  Add PowerPC FMV symbol tests.
  Add x86 FMV symbol tests

 gcc/attribs.cc                                |  93 ++++--
 gcc/attribs.h                                 |   1 +
 gcc/c-family/c-attribs.cc                     |  11 +-
 gcc/cgraph.cc                                 |  28 +-
 gcc/cgraph.h                                  |  13 +-
 gcc/cgraphclones.cc                           |  16 +-
 gcc/cgraphunit.cc                             |   9 +
 gcc/config/aarch64/aarch64.cc                 | 253 +++++++---------
 gcc/config/aarch64/aarch64.opt                |   2 +-
 gcc/config/i386/i386-features.cc              | 141 +++++----
 gcc/config/riscv/riscv.cc                     | 139 +++------
 gcc/config/rs6000/rs6000.cc                   | 150 +++++++---
 gcc/cp/call.cc                                |  10 +
 gcc/cp/class.cc                               |  15 +-
 gcc/cp/cp-gimplify.cc                         |   6 +-
 gcc/cp/cp-tree.h                              |   2 +-
 gcc/cp/decl.cc                                |  37 ++-
 gcc/cp/typeck.cc                              |  10 +
 gcc/doc/invoke.texi                           |   5 +-
 gcc/ipa.cc                                    |  11 +
 gcc/multiple_target.cc                        | 282 ++++++++----------
 gcc/testsuite/g++.target/aarch64/mv-1.C       |   5 +-
 .../g++.target/aarch64/mv-and-mvc-error1.C    |   9 +
 .../g++.target/aarch64/mv-and-mvc-error2.C    |   9 +
 .../g++.target/aarch64/mv-and-mvc-error3.C    |   8 +
 .../g++.target/aarch64/mv-and-mvc1.C          |  37 +++
 .../g++.target/aarch64/mv-and-mvc2.C          |  28 ++
 .../g++.target/aarch64/mv-and-mvc3.C          |  40 +++
 .../g++.target/aarch64/mv-and-mvc4.C          |  37 +++
 gcc/testsuite/g++.target/aarch64/mv-error1.C  |  18 ++
 gcc/testsuite/g++.target/aarch64/mv-error2.C  |   9 +
 gcc/testsuite/g++.target/aarch64/mv-error3.C  |  12 +
 gcc/testsuite/g++.target/aarch64/mv-error4.C  |   9 +
 gcc/testsuite/g++.target/aarch64/mv-error5.C  |   8 +
 gcc/testsuite/g++.target/aarch64/mv-error6.C  |  20 ++
 gcc/testsuite/g++.target/aarch64/mv-error7.C  |  11 +
 gcc/testsuite/g++.target/aarch64/mv-error8.C  |  12 +
 gcc/testsuite/g++.target/aarch64/mv-pragma.C  |   1 -
 .../g++.target/aarch64/mv-symbols1.C          |   1 -
 .../g++.target/aarch64/mv-symbols10.C         |  26 ++
 .../g++.target/aarch64/mv-symbols11.C         |  29 ++
 .../g++.target/aarch64/mv-symbols12.C         |  27 ++
 .../g++.target/aarch64/mv-symbols13.C         |  27 ++
 .../g++.target/aarch64/mv-symbols2.C          |  13 +-
 .../g++.target/aarch64/mv-symbols3.C          |   7 +-
 .../g++.target/aarch64/mv-symbols4.C          |   7 +-
 .../g++.target/aarch64/mv-symbols5.C          |   7 +-
 .../g++.target/aarch64/mv-symbols6.C          |  24 ++
 .../g++.target/aarch64/mv-symbols7.C          |  47 +++
 .../g++.target/aarch64/mv-symbols8.C          |  45 +++
 .../g++.target/aarch64/mv-symbols9.C          |  42 +++
 .../g++.target/aarch64/mv-warning1.C          |   9 -
 gcc/testsuite/g++.target/aarch64/mvc-error1.C |   9 +
 gcc/testsuite/g++.target/aarch64/mvc-error2.C |   9 +
 .../g++.target/aarch64/mvc-symbols1.C         |   1 -
 .../g++.target/aarch64/mvc-symbols2.C         |   1 -
 .../g++.target/aarch64/mvc-symbols3.C         |  13 +-
 .../g++.target/aarch64/mvc-symbols4.C         |   1 -
 .../g++.target/aarch64/mvc-warning1.C         |   6 -
 gcc/testsuite/g++.target/i386/mv-symbols1.C   |  68 +++++
 gcc/testsuite/g++.target/i386/mv-symbols2.C   |  56 ++++
 gcc/testsuite/g++.target/i386/mv-symbols3.C   |  44 +++
 gcc/testsuite/g++.target/i386/mv-symbols4.C   |  50 ++++
 gcc/testsuite/g++.target/i386/mv-symbols5.C   |  56 ++++
 gcc/testsuite/g++.target/i386/mvc-symbols1.C  |  44 +++
 gcc/testsuite/g++.target/i386/mvc-symbols2.C  |  29 ++
 gcc/testsuite/g++.target/i386/mvc-symbols3.C  |  35 +++
 gcc/testsuite/g++.target/i386/mvc-symbols4.C  |  23 ++
 .../g++.target/powerpc/mvc-symbols1.C         |  47 +++
 .../g++.target/powerpc/mvc-symbols2.C         |  35 +++
 .../g++.target/powerpc/mvc-symbols3.C         |  41 +++
 .../g++.target/powerpc/mvc-symbols4.C         |  29 ++
 gcc/testsuite/g++.target/riscv/mv-symbols2.C  |  12 +-
 gcc/testsuite/g++.target/riscv/mv-symbols3.C  |   6 +-
 gcc/testsuite/g++.target/riscv/mv-symbols4.C  |   6 +-
 gcc/testsuite/g++.target/riscv/mv-symbols5.C  |   6 +-
 gcc/testsuite/g++.target/riscv/mvc-symbols3.C |  12 +-
 gcc/tree.cc                                   |  52 ++--
 gcc/tree.h                                    |   4 +-
 gcc/vec.cc                                    | 210 +++++++++++++
 gcc/vec.h                                     |  65 ++++
 81 files changed, 2141 insertions(+), 647 deletions(-)
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error1.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error2.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error3.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error4.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error5.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error6.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error7.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error8.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols10.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols11.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols12.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols13.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols6.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols7.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols8.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols9.C
 delete mode 100644 gcc/testsuite/g++.target/aarch64/mv-warning1.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mvc-error1.C
 create mode 100644 gcc/testsuite/g++.target/aarch64/mvc-error2.C
 delete mode 100644 gcc/testsuite/g++.target/aarch64/mvc-warning1.C
 create mode 100644 gcc/testsuite/g++.target/i386/mv-symbols1.C
 create mode 100644 gcc/testsuite/g++.target/i386/mv-symbols2.C
 create mode 100644 gcc/testsuite/g++.target/i386/mv-symbols3.C
 create mode 100644 gcc/testsuite/g++.target/i386/mv-symbols4.C
 create mode 100644 gcc/testsuite/g++.target/i386/mv-symbols5.C
 create mode 100644 gcc/testsuite/g++.target/i386/mvc-symbols1.C
 create mode 100644 gcc/testsuite/g++.target/i386/mvc-symbols2.C
 create mode 100644 gcc/testsuite/g++.target/i386/mvc-symbols3.C
 create mode 100644 gcc/testsuite/g++.target/i386/mvc-symbols4.C
 create mode 100644 gcc/testsuite/g++.target/powerpc/mvc-symbols1.C
 create mode 100644 gcc/testsuite/g++.target/powerpc/mvc-symbols2.C
 create mode 100644 gcc/testsuite/g++.target/powerpc/mvc-symbols3.C
 create mode 100644 gcc/testsuite/g++.target/powerpc/mvc-symbols4.C

-- 
2.34.1

Reply via email to