This revision was automatically updated to reflect the committed changes. Closed by commit rGb6db864a2fdf: [AArch64][FMV] Prevent target attribute using for multiversioning. (authored by ilinpv).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D150867/new/ https://reviews.llvm.org/D150867 Files: clang/lib/Sema/SemaDecl.cpp clang/test/Sema/attr-target-version.c Index: clang/test/Sema/attr-target-version.c =================================================================== --- clang/test/Sema/attr-target-version.c +++ clang/test/Sema/attr-target-version.c @@ -15,15 +15,22 @@ //expected-note@+1 {{previous definition is here}} int __attribute__((target_version("default"))) foo(void) { return 2; } -//expected-note@+1 {{previous declaration is here}} +//expected-note@+1 {{previous definition is here}} int __attribute__((target_version("sha3 + pmull "))) foo(void) { return 1; } +//expected-note@-1 {{previous definition is here}} -//expected-error@+1 {{multiversioning attributes cannot be combined}} +//expected-error@+1 {{redefinition of 'foo'}} int __attribute__((target("dotprod"))) foo(void) { return -1; } +//expected-warning@-1 {{attribute declaration must precede definition}} //expected-error@+1 {{redefinition of 'foo'}} int foo(void) { return 2; } +//expected-note@+1 {{previous definition is here}} +__attribute__ ((target("bf16,sve,sve2,dotprod"))) int func(void) { return 1; } +//expected-error@+1 {{redefinition of 'func'}} +__attribute__ ((target("default"))) int func(void) { return 0; } + //expected-note@+1 {{previous declaration is here}} void __attribute__((target_version("bti+flagm2"))) one(void) {} //expected-error@+1 {{multiversioned function redeclarations require identical target attributes}} Index: clang/lib/Sema/SemaDecl.cpp =================================================================== --- clang/lib/Sema/SemaDecl.cpp +++ clang/lib/Sema/SemaDecl.cpp @@ -11540,6 +11540,10 @@ return false; } + // Target attribute on AArch64 is not used for multiversioning + if (NewTA && S.getASTContext().getTargetInfo().getTriple().isAArch64()) + return false; + if (!OldDecl || !OldDecl->getAsFunction() || OldDecl->getDeclContext()->getRedeclContext() != NewFD->getDeclContext()->getRedeclContext()) {
Index: clang/test/Sema/attr-target-version.c =================================================================== --- clang/test/Sema/attr-target-version.c +++ clang/test/Sema/attr-target-version.c @@ -15,15 +15,22 @@ //expected-note@+1 {{previous definition is here}} int __attribute__((target_version("default"))) foo(void) { return 2; } -//expected-note@+1 {{previous declaration is here}} +//expected-note@+1 {{previous definition is here}} int __attribute__((target_version("sha3 + pmull "))) foo(void) { return 1; } +//expected-note@-1 {{previous definition is here}} -//expected-error@+1 {{multiversioning attributes cannot be combined}} +//expected-error@+1 {{redefinition of 'foo'}} int __attribute__((target("dotprod"))) foo(void) { return -1; } +//expected-warning@-1 {{attribute declaration must precede definition}} //expected-error@+1 {{redefinition of 'foo'}} int foo(void) { return 2; } +//expected-note@+1 {{previous definition is here}} +__attribute__ ((target("bf16,sve,sve2,dotprod"))) int func(void) { return 1; } +//expected-error@+1 {{redefinition of 'func'}} +__attribute__ ((target("default"))) int func(void) { return 0; } + //expected-note@+1 {{previous declaration is here}} void __attribute__((target_version("bti+flagm2"))) one(void) {} //expected-error@+1 {{multiversioned function redeclarations require identical target attributes}} Index: clang/lib/Sema/SemaDecl.cpp =================================================================== --- clang/lib/Sema/SemaDecl.cpp +++ clang/lib/Sema/SemaDecl.cpp @@ -11540,6 +11540,10 @@ return false; } + // Target attribute on AArch64 is not used for multiversioning + if (NewTA && S.getASTContext().getTargetInfo().getTriple().isAArch64()) + return false; + if (!OldDecl || !OldDecl->getAsFunction() || OldDecl->getDeclContext()->getRedeclContext() != NewFD->getDeclContext()->getRedeclContext()) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits