mirror of git://gcc.gnu.org/git/gcc.git
c: Fix i386 target attribute regression [PR 122180]
My patch (r16-4182-g73888cefe6da65) broke another target (i386), which this patch fixes. The issue was the target_version code was incorrectly being triggered on targets that do not support target_version semantics (i386). PR target/122180 gcc/c/ChangeLog: * c-decl.cc (pushdecl): Add TARGET_HAS_FMV_TARGET_ATTRIBUTE check. gcc/testsuite/ChangeLog: * gcc.target/i386/pr122180.c: New test.
This commit is contained in:
parent
bb22f7d4d6
commit
d78bd76a49
|
@ -3414,8 +3414,11 @@ pushdecl (tree x)
|
|||
}
|
||||
}
|
||||
|
||||
/* Check if x is part of a FMV set with b_use. */
|
||||
if (b_use && TREE_CODE (b_use->decl) == FUNCTION_DECL
|
||||
/* Check if x is part of a FMV set with b_use.
|
||||
FMV is only supported in c for targets with target_version
|
||||
attributes. */
|
||||
if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
|
||||
&& b_use && TREE_CODE (b_use->decl) == FUNCTION_DECL
|
||||
&& TREE_CODE (x) == FUNCTION_DECL && DECL_FILE_SCOPE_P (b_use->decl)
|
||||
&& DECL_FILE_SCOPE_P (x)
|
||||
&& disjoint_version_decls (x, b_use->decl)
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
static void s() __attribute__((target("avx")));
|
||||
static void s() { }
|
||||
void f() {
|
||||
s();
|
||||
}
|
Loading…
Reference in New Issue