{"id":2226698,"url":"http://patchwork.ozlabs.org/api/covers/2226698/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/cover/bmm.hhuodmon6a.gcc.gcc-TEST.alfie.richards.49.1.0@forge-stage.sourceware.org/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/projects/17/?format=json","name":"GNU Compiler Collection","link_name":"gcc","list_id":"gcc-patches.gcc.gnu.org","list_email":"gcc-patches@gcc.gnu.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<bmm.hhuodmon6a.gcc.gcc-TEST.alfie.richards.49.1.0@forge-stage.sourceware.org>","list_archive_url":null,"date":"2026-04-22T18:21:48","name":"[v1,00/13] FMV refactor and ACLE compliance for C++","submitter":{"id":93228,"url":"http://patchwork.ozlabs.org/api/people/93228/?format=json","name":"\\\"alfie.richards via Sourceware Forge\\\"","email":"forge-bot+alfie.richards@forge-stage.sourceware.org"},"mbox":"http://patchwork.ozlabs.org/project/gcc/cover/bmm.hhuodmon6a.gcc.gcc-TEST.alfie.richards.49.1.0@forge-stage.sourceware.org/mbox/","series":[{"id":501072,"url":"http://patchwork.ozlabs.org/api/series/501072/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=501072","date":"2026-04-22T18:21:54","name":"FMV refactor and ACLE compliance for C++","version":1,"mbox":"http://patchwork.ozlabs.org/series/501072/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2226698/comments/","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org","sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org","server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g17Fs2SKzz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 04:35:45 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 7BD5442D1F73\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 18:35:43 +0000 (GMT)","from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id 4997C441F946\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:23:30 +0000 (GMT)","from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id 21AFA43453\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:23:30 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 7BD5442D1F73","OpenDKIM Filter v2.11.0 sourceware.org 4997C441F946"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 4997C441F946","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 4997C441F946","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776882210; cv=none;\n b=WSOr5hQ15Ew0BCD8jNmokv3x8FsRr7Jt9OSQdeuZKHC75axUD9BlfHZVb1L15b4nvPCjhEQiELCjQpMLAleKTDsDAHs/m9Az9rI5gif58ECnXSI0fWK4ZYnB1qbFLR+Z0cH7ztKUSftC1/Elfnrm0SvVcy7zo3y4TJ15pK0oIUs=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776882210; c=relaxed/simple;\n bh=sEvMwKPZl45YjF4GZxT/A9EGjsFnqcMSH5zZTxhb/2k=;\n h=From:Date:Subject:MIME-Version:To:Message-ID;\n b=JrcVnQS0VBkrV7gq/8Jc1j6QMXnysAvcuBsd9Y6WcLmPvdxjThcdDtdtKoyO6qLkHSAPMCz400ijG4S+8yef6mBQwxywVpfGNQBcehaacyQ7M9uyhb5U0NXkXndfSxU+n2TNNwU1+XSxZvM3n/z2HXGsZu2341GAK3nhukg/MUs=","ARC-Authentication-Results":"i=1; server2.sourceware.org","From":"\"\\\"alfie.richards via Sourceware Forge\\\"\"\n <forge-bot+alfie.richards@forge-stage.sourceware.org>","Date":"Wed, 22 Apr 2026 18:21:48 +0000","Subject":"[PATCH v1 00/13] FMV refactor and ACLE compliance for C++","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","To":"gcc-patches mailing list <gcc-patches@gcc.gnu.org>","Message-ID":"\n <bmm.hhuodmon6a.gcc.gcc-TEST.alfie.richards.49.1.0@forge-stage.sourceware.org>","X-Mailer":"batrachomyomachia","X-Requested-Reviewer":["rsandifo","rearnsha"],"X-Pull-Request-Organization":"gcc","X-Pull-Request-Repository":"gcc-TEST","X-Pull-Request":"https://forge.sourceware.org/gcc/gcc-TEST/pulls/49","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Reply-To":"gcc-patches mailing list <gcc-patches@gcc.gnu.org>,\n alfierichards@sourceware.org","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"},"content":"Hi gcc-patches mailing list,\n\"alfie.richards via Sourceware Forge\" <forge-bot+alfie.richards@forge-stage.sourceware.org> has requested that the following forgejo pull request\nbe published on the mailing list.\n\nCreated on: 2025-04-03 12:06:42+00:00\nLatest update: 2025-11-06 13:27:25+00:00\nChanges: 129 changed files, 3331 additions, 820 deletions\nHead revision: alfie.richards/gcc-TEST ref fmv_cxx commit d786bf33d2bbdf1562f7913b5e54507ee9ecc6e1\nBase revision: gcc/gcc-TEST ref master commit e31a353f1e7c5fe24a6b9d881adabfeed99dc845 r16-3187-ge31a353f1e7c5f\nMerge base: e31a353f1e7c5fe24a6b9d881adabfeed99dc845\nFull diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/49.diff\nDiscussion:  https://forge.sourceware.org/gcc/gcc-TEST/pulls/49\nRequested Reviewers: rsandifo, rearnsha\n\nAnother update to this series.\n\nThis patch changes the version info structure to be sorted by\npriority. This allows easier reasoning for optimisations and prevents having to\ncalculate the priority of functions repeatedly.\n\nThe other change is that the target_clones pass was split in two. This is\nbecause the target_clones pass now dispatches the target_versions and\ntarget_clones, and different versions may have arbitrarily idfferent bodies.\nTherefore, allowing passes like efvp before dispatching made some invalid\noptimisations.\nHowever, as Alice Carlotti (alice.carlotti@arm.com) pointed out offline, the\ntarget_clones pass was likely put in this position late as for target_clones\nit is valid, as all the versions have the same body.\nSo I split it in two. In the early stage complicated cases where there are\nmultiple decls are expanded and dispatched. In the later stages, the simple\ncase of a lone target_clones decl is dispatched (as is always the case\nfor TARGET_HAS_FMV_TARGET_ATTRIBUTE targets).\n\nRegression tested and bootstrapped for aarch64-none-linux-gnu\nand x86_64-unknown-linux-gnu.\n\nCross compiled and checked FMV tests for riscv and powerpc.\n\nHoping for GCC16 stage 1 for this.\n\nChange log\n==========\n\nV4:\n- Changed version_info structure to be sorted by priority\n- Split the target_clones pass into early/late stages\n- Split out fix for PR c++/119498\n\nV3: https://gcc.gnu.org/pipermail/gcc-patches/2025-March/679488.html\n- Added reject target_clones version logic and hook\n- Added pretty print for string_slice\n- Refactored merging and conflict logic in front end\n- Improved diagnostics\n\nV2: https://gcc.gnu.org/pipermail/gcc-patches/2025-February/675960.html\n- Changed recording of assembly name to be done in version into initialisation\n- Changed behaviour for a lone default decl\n\nV1: https://gcc.gnu.org/pipermail/gcc-patches/2025-February/674973.htmlhttps://gcc.gnu.org/pipermail/gcc-patches/2025-February/674973.html\n- Initial\n\n\nChanged files:\n- A: gcc/testsuite/g++.target/aarch64/fmv-selection1.C\n- A: gcc/testsuite/g++.target/aarch64/fmv-selection2.C\n- A: gcc/testsuite/g++.target/aarch64/fmv-selection3.C\n- A: gcc/testsuite/g++.target/aarch64/fmv-selection4.C\n- A: gcc/testsuite/g++.target/aarch64/fmv-selection5.C\n- A: gcc/testsuite/g++.target/aarch64/fmv-selection6.C\n- A: gcc/testsuite/g++.target/aarch64/fmv-selection7.C\n- A: gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C\n- A: gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C\n- A: gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C\n- A: gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C\n- A: gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C\n- A: gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C\n- A: gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error1.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error2.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error3.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error4.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error5.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error6.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error7.C\n- A: gcc/testsuite/g++.target/aarch64/mv-error8.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols10.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols11.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols12.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols13.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols6.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols7.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols8.C\n- A: gcc/testsuite/g++.target/aarch64/mv-symbols9.C\n- A: gcc/testsuite/g++.target/aarch64/mvc-error1.C\n- A: gcc/testsuite/g++.target/aarch64/mvc-error2.C\n- A: gcc/testsuite/gcc.target/aarch64/mv-1.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error1.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error2.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error3.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-and-mvc1.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-and-mvc2.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-and-mvc3.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-and-mvc4.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error1.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error2.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error3.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error4.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error5.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error6.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error7.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error8.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-error9.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols1.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols10.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols11.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols12.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols13.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols14.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols2.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols3.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols4.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols5.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols6.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols7.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols8.c\n- A: gcc/testsuite/gcc.target/aarch64/mv-symbols9.c\n- A: gcc/testsuite/gcc.target/aarch64/mvc-error1.c\n- A: gcc/testsuite/gcc.target/aarch64/mvc-error2.c\n- A: gcc/testsuite/gcc.target/aarch64/mvc-symbols1.c\n- A: gcc/testsuite/gcc.target/aarch64/mvc-symbols2.c\n- A: gcc/testsuite/gcc.target/aarch64/mvc-symbols3.c\n- A: gcc/testsuite/gcc.target/aarch64/mvc-symbols4.c\n- A: gcc/testsuite/gcc.target/aarch64/mvc-warning1.c\n- D: gcc/testsuite/g++.target/aarch64/mv-warning1.C\n- M: gcc/attribs.cc\n- M: gcc/attribs.h\n- M: gcc/c-family/c-attribs.cc\n- M: gcc/c-family/c-pretty-print.cc\n- M: gcc/c-family/c-pretty-print.h\n- M: gcc/c/c-decl.cc\n- M: gcc/c/c-objc-common.cc\n- M: gcc/cgraph.cc\n- M: gcc/cgraph.h\n- M: gcc/cgraphclones.cc\n- M: gcc/cgraphunit.cc\n- M: gcc/config/aarch64/aarch64.cc\n- M: gcc/config/aarch64/aarch64.opt\n- M: gcc/config/i386/i386-features.cc\n- M: gcc/config/riscv/riscv-protos.h\n- M: gcc/config/riscv/riscv-target-attr.cc\n- M: gcc/config/riscv/riscv.cc\n- M: gcc/config/rs6000/rs6000.cc\n- M: gcc/cp/call.cc\n- M: gcc/cp/class.cc\n- M: gcc/cp/cp-gimplify.cc\n- M: gcc/cp/cxx-pretty-print.h\n- M: gcc/cp/decl.cc\n- M: gcc/cp/decl2.cc\n- M: gcc/cp/error.cc\n- M: gcc/cp/typeck.cc\n- M: gcc/doc/invoke.texi\n- M: gcc/doc/tm.texi\n- M: gcc/doc/tm.texi.in\n- M: gcc/hooks.cc\n- M: gcc/hooks.h\n- M: gcc/ipa.cc\n- M: gcc/multiple_target.cc\n- M: gcc/passes.def\n- M: gcc/target.def\n- M: gcc/testsuite/g++.target/aarch64/mv-1.C\n- M: gcc/testsuite/g++.target/aarch64/mv-pragma.C\n- M: gcc/testsuite/g++.target/aarch64/mv-symbols1.C\n- M: gcc/testsuite/g++.target/aarch64/mv-symbols2.C\n- M: gcc/testsuite/g++.target/aarch64/mv-symbols3.C\n- M: gcc/testsuite/g++.target/aarch64/mv-symbols4.C\n- M: gcc/testsuite/g++.target/aarch64/mv-symbols5.C\n- M: gcc/testsuite/g++.target/aarch64/mvc-symbols1.C\n- M: gcc/testsuite/g++.target/aarch64/mvc-symbols2.C\n- M: gcc/testsuite/g++.target/aarch64/mvc-symbols3.C\n- M: gcc/testsuite/g++.target/aarch64/mvc-symbols4.C\n- M: gcc/testsuite/g++.target/aarch64/mvc-warning1.C\n- M: gcc/testsuite/g++.target/i386/mv-symbols1.C\n- M: gcc/testsuite/g++.target/i386/mv-symbols3.C\n- M: gcc/testsuite/g++.target/i386/mv-symbols4.C\n- M: gcc/testsuite/g++.target/i386/mv-symbols5.C\n- M: gcc/testsuite/g++.target/riscv/mv-symbols2.C\n- M: gcc/testsuite/g++.target/riscv/mv-symbols3.C\n- M: gcc/testsuite/g++.target/riscv/mv-symbols4.C\n- M: gcc/testsuite/g++.target/riscv/mv-symbols5.C\n- M: gcc/testsuite/g++.target/riscv/mvc-symbols3.C\n- M: gcc/tree.cc\n- M: gcc/tree.h\n\n\nAlfie Richards (13):\n  cgraph: Add clone_identifier function.\n  fmv: Refactor FMV name mangling.\n  riscv: Refactor riscv target parsing to take string_slice.\n  fmv: Add check_target_clone hook for filtering target_clone versions.\n  fmv: Change target_version semantics to follow ACLE specification.\n  c/c++: Add target_[version/clones] to decl diagnostics formatting.\n  c++: Refactor FMV frontend conflict and merging logic and hooks.\n  fmv: Support mixing of target_clones and target_version.\n  aarch64: testsuite: Add diagnostic tests for Aarch64 FMV.\n  aarch64: Remove FMV beta warning.\n  c: Add target_version attribute support.\n  c/aarch64: Add FMV diagnostic tests.\n  FMV: Redirect to specific target\n\n gcc/attribs.cc                                | 151 +++--\n gcc/attribs.h                                 |   3 +-\n gcc/c-family/c-attribs.cc                     |  32 +-\n gcc/c-family/c-pretty-print.cc                |  81 +++\n gcc/c-family/c-pretty-print.h                 |   2 +\n gcc/c/c-decl.cc                               | 115 ++++\n gcc/c/c-objc-common.cc                        |   6 +\n gcc/cgraph.cc                                 |   5 +-\n gcc/cgraph.h                                  |  24 +-\n gcc/cgraphclones.cc                           |  58 +-\n gcc/cgraphunit.cc                             |   9 +\n gcc/config/aarch64/aarch64.cc                 | 325 ++++++-----\n gcc/config/aarch64/aarch64.opt                |   2 +-\n gcc/config/i386/i386-features.cc              |  74 +--\n gcc/config/riscv/riscv-protos.h               |   2 +\n gcc/config/riscv/riscv-target-attr.cc         |  14 +-\n gcc/config/riscv/riscv.cc                     | 245 ++++----\n gcc/config/rs6000/rs6000.cc                   |  82 ++-\n gcc/cp/call.cc                                |  10 +\n gcc/cp/class.cc                               |  16 +-\n gcc/cp/cp-gimplify.cc                         |  11 +-\n gcc/cp/cxx-pretty-print.h                     |   4 +\n gcc/cp/decl.cc                                |  29 +-\n gcc/cp/decl2.cc                               |   2 +-\n gcc/cp/error.cc                               |   3 +\n gcc/cp/typeck.cc                              |  10 +\n gcc/doc/invoke.texi                           |   5 +-\n gcc/doc/tm.texi                               |  37 +-\n gcc/doc/tm.texi.in                            |   4 +\n gcc/hooks.cc                                  |  15 +\n gcc/hooks.h                                   |   4 +\n gcc/ipa.cc                                    |  11 +\n gcc/multiple_target.cc                        | 546 ++++++++++--------\n gcc/passes.def                                |   3 +-\n gcc/target.def                                |  52 +-\n .../g++.target/aarch64/fmv-selection1.C       |  40 ++\n .../g++.target/aarch64/fmv-selection2.C       |  40 ++\n .../g++.target/aarch64/fmv-selection3.C       |  25 +\n .../g++.target/aarch64/fmv-selection4.C       |  30 +\n .../g++.target/aarch64/fmv-selection5.C       |  28 +\n .../g++.target/aarch64/fmv-selection6.C       |  27 +\n .../g++.target/aarch64/fmv-selection7.C       |  65 +++\n gcc/testsuite/g++.target/aarch64/mv-1.C       |   5 +-\n .../g++.target/aarch64/mv-and-mvc-error1.C    |   9 +\n .../g++.target/aarch64/mv-and-mvc-error2.C    |   9 +\n .../g++.target/aarch64/mv-and-mvc-error3.C    |   8 +\n .../g++.target/aarch64/mv-and-mvc1.C          |  37 ++\n .../g++.target/aarch64/mv-and-mvc2.C          |  28 +\n .../g++.target/aarch64/mv-and-mvc3.C          |  40 ++\n .../g++.target/aarch64/mv-and-mvc4.C          |  37 ++\n gcc/testsuite/g++.target/aarch64/mv-error1.C  |  18 +\n gcc/testsuite/g++.target/aarch64/mv-error2.C  |   9 +\n gcc/testsuite/g++.target/aarch64/mv-error3.C  |  12 +\n gcc/testsuite/g++.target/aarch64/mv-error4.C  |   9 +\n gcc/testsuite/g++.target/aarch64/mv-error5.C  |   8 +\n gcc/testsuite/g++.target/aarch64/mv-error6.C  |  20 +\n gcc/testsuite/g++.target/aarch64/mv-error7.C  |  11 +\n gcc/testsuite/g++.target/aarch64/mv-error8.C  |  12 +\n gcc/testsuite/g++.target/aarch64/mv-pragma.C  |   1 -\n .../g++.target/aarch64/mv-symbols1.C          |   1 -\n .../g++.target/aarch64/mv-symbols10.C         |  26 +\n .../g++.target/aarch64/mv-symbols11.C         |  29 +\n .../g++.target/aarch64/mv-symbols12.C         |  27 +\n .../g++.target/aarch64/mv-symbols13.C         |  27 +\n .../g++.target/aarch64/mv-symbols2.C          |  13 +-\n .../g++.target/aarch64/mv-symbols3.C          |   7 +-\n .../g++.target/aarch64/mv-symbols4.C          |   7 +-\n .../g++.target/aarch64/mv-symbols5.C          |   7 +-\n .../g++.target/aarch64/mv-symbols6.C          |  20 +\n .../g++.target/aarch64/mv-symbols7.C          |  47 ++\n .../g++.target/aarch64/mv-symbols8.C          |  45 ++\n .../g++.target/aarch64/mv-symbols9.C          |  42 ++\n .../g++.target/aarch64/mv-warning1.C          |   9 -\n gcc/testsuite/g++.target/aarch64/mvc-error1.C |   9 +\n gcc/testsuite/g++.target/aarch64/mvc-error2.C |   9 +\n .../g++.target/aarch64/mvc-symbols1.C         |   1 -\n .../g++.target/aarch64/mvc-symbols2.C         |   1 -\n .../g++.target/aarch64/mvc-symbols3.C         |  13 +-\n .../g++.target/aarch64/mvc-symbols4.C         |   1 -\n .../g++.target/aarch64/mvc-warning1.C         |  11 +-\n gcc/testsuite/g++.target/i386/mv-symbols1.C   |  12 +-\n gcc/testsuite/g++.target/i386/mv-symbols3.C   |  10 +-\n gcc/testsuite/g++.target/i386/mv-symbols4.C   |  10 +-\n gcc/testsuite/g++.target/i386/mv-symbols5.C   |  10 +-\n gcc/testsuite/g++.target/riscv/mv-symbols2.C  |  12 +-\n gcc/testsuite/g++.target/riscv/mv-symbols3.C  |   6 +-\n gcc/testsuite/g++.target/riscv/mv-symbols4.C  |   6 +-\n gcc/testsuite/g++.target/riscv/mv-symbols5.C  |   6 +-\n gcc/testsuite/g++.target/riscv/mvc-symbols3.C |  12 +-\n gcc/testsuite/gcc.target/aarch64/mv-1.c       |  43 ++\n .../gcc.target/aarch64/mv-and-mvc-error1.c    |   9 +\n .../gcc.target/aarch64/mv-and-mvc-error2.c    |   9 +\n .../gcc.target/aarch64/mv-and-mvc-error3.c    |   8 +\n .../gcc.target/aarch64/mv-and-mvc1.c          |  37 ++\n .../gcc.target/aarch64/mv-and-mvc2.c          |  28 +\n .../gcc.target/aarch64/mv-and-mvc3.c          |  40 ++\n .../gcc.target/aarch64/mv-and-mvc4.c          |  37 ++\n gcc/testsuite/gcc.target/aarch64/mv-error1.c  |  18 +\n gcc/testsuite/gcc.target/aarch64/mv-error2.c  |   9 +\n gcc/testsuite/gcc.target/aarch64/mv-error3.c  |  12 +\n gcc/testsuite/gcc.target/aarch64/mv-error4.c  |   9 +\n gcc/testsuite/gcc.target/aarch64/mv-error5.c  |   8 +\n gcc/testsuite/gcc.target/aarch64/mv-error6.c  |  20 +\n gcc/testsuite/gcc.target/aarch64/mv-error7.c  |  11 +\n gcc/testsuite/gcc.target/aarch64/mv-error8.c  |  12 +\n gcc/testsuite/gcc.target/aarch64/mv-error9.c  |  12 +\n .../gcc.target/aarch64/mv-symbols1.c          |  38 ++\n .../gcc.target/aarch64/mv-symbols10.c         |  42 ++\n .../gcc.target/aarch64/mv-symbols11.c         |  16 +\n .../gcc.target/aarch64/mv-symbols12.c         |  27 +\n .../gcc.target/aarch64/mv-symbols13.c         |  28 +\n .../gcc.target/aarch64/mv-symbols14.c         |  34 ++\n .../gcc.target/aarch64/mv-symbols2.c          |  28 +\n .../gcc.target/aarch64/mv-symbols3.c          |  27 +\n .../gcc.target/aarch64/mv-symbols4.c          |  31 +\n .../gcc.target/aarch64/mv-symbols5.c          |  36 ++\n .../gcc.target/aarch64/mv-symbols6.c          |  20 +\n .../gcc.target/aarch64/mv-symbols7.c          |  47 ++\n .../gcc.target/aarch64/mv-symbols8.c          |  47 ++\n .../gcc.target/aarch64/mv-symbols9.c          |  44 ++\n gcc/testsuite/gcc.target/aarch64/mvc-error1.c |   9 +\n gcc/testsuite/gcc.target/aarch64/mvc-error2.c |   9 +\n .../gcc.target/aarch64/mvc-symbols1.c         |  25 +\n .../gcc.target/aarch64/mvc-symbols2.c         |  15 +\n .../gcc.target/aarch64/mvc-symbols3.c         |  19 +\n .../gcc.target/aarch64/mvc-symbols4.c         |  12 +\n .../gcc.target/aarch64/mvc-warning1.c         |  13 +\n gcc/tree.cc                                   | 286 ++++++++-\n gcc/tree.h                                    |  20 +-\n 129 files changed, 3331 insertions(+), 820 deletions(-)\n create mode 100644 gcc/testsuite/g++.target/aarch64/fmv-selection1.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/fmv-selection2.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/fmv-selection3.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/fmv-selection4.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/fmv-selection5.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/fmv-selection6.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/fmv-selection7.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error1.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error2.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error3.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error4.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error5.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error6.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error7.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-error8.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols10.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols11.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols12.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols13.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols6.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols7.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols8.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mv-symbols9.C\n delete mode 100644 gcc/testsuite/g++.target/aarch64/mv-warning1.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mvc-error1.C\n create mode 100644 gcc/testsuite/g++.target/aarch64/mvc-error2.C\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc-error3.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc3.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-and-mvc4.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error3.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error4.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error5.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error6.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error7.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error8.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-error9.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols10.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols11.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols12.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols13.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols14.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols3.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols4.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols5.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols6.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols7.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols8.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mv-symbols9.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-error1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-error2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols3.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-symbols4.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/mvc-warning1.c"}