Do not allow target_clones with alias attr (PR lto/90500).
2019-05-16 Martin Liska <mliska@suse.cz> PR lto/90500 * multiple_target.c (expand_target_clones): Do not allow target_clones being used with a symbol that is an alias. 2019-05-16 Martin Liska <mliska@suse.cz> PR lto/90500 * gcc.target/i386/pr90500-1.c: New test. * gcc.target/i386/pr90500-2.c: New test. From-SVN: r271289
This commit is contained in:
parent
74a96dd28c
commit
a61b003fbd
@ -1,3 +1,9 @@
|
||||
2019-05-16 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR lto/90500
|
||||
* multiple_target.c (expand_target_clones): Do not allow
|
||||
target_clones being used with a symbol that is an alias.
|
||||
|
||||
2019-05-16 Vladislav Ivanishin <vlad@ispras.ru>
|
||||
|
||||
PR tree-optimization/90394
|
||||
|
@ -356,7 +356,7 @@ expand_target_clones (struct cgraph_node *node, bool definition)
|
||||
}
|
||||
|
||||
if (node->definition
|
||||
&& !tree_versionable_function_p (node->decl))
|
||||
&& (node->alias || !tree_versionable_function_p (node->decl)))
|
||||
{
|
||||
auto_diagnostic_group d;
|
||||
error_at (DECL_SOURCE_LOCATION (node->decl),
|
||||
@ -365,6 +365,9 @@ expand_target_clones (struct cgraph_node *node, bool definition)
|
||||
if (lookup_attribute ("noclone", DECL_ATTRIBUTES (node->decl)))
|
||||
reason = G_("function %q+F can never be copied "
|
||||
"because it has %<noclone%> attribute");
|
||||
else if (node->alias)
|
||||
reason
|
||||
= "%<target_clones%> cannot be combined with %<alias%> attribute";
|
||||
else
|
||||
reason = copy_forbidden (DECL_STRUCT_FUNCTION (node->decl));
|
||||
if (reason)
|
||||
|
@ -1,3 +1,9 @@
|
||||
2019-05-16 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR lto/90500
|
||||
* gcc.target/i386/pr90500-1.c: New test.
|
||||
* gcc.target/i386/pr90500-2.c: New test.
|
||||
|
||||
2019-05-16 Vladislav Ivanishin <vlad@ispras.ru>
|
||||
|
||||
PR tree-optimization/90394
|
||||
|
8
gcc/testsuite/gcc.target/i386/pr90500-1.c
Normal file
8
gcc/testsuite/gcc.target/i386/pr90500-1.c
Normal file
@ -0,0 +1,8 @@
|
||||
/* PR middle-end/84723 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-require-ifunc } */
|
||||
|
||||
__attribute__((target_clones("arch=haswell", "default"))) int __tanh() {}
|
||||
__typeof(__tanh) tanhf64 __attribute__((alias("__tanh")))/* { dg-error "clones for .target_clones. attribute cannot be created" } */
|
||||
/* { dg-message "'target_clones' cannot be combined with 'alias' attribute" "" { target *-*-* } .-1 } */
|
||||
__attribute__((__copy__(__tanh)));
|
7
gcc/testsuite/gcc.target/i386/pr90500-2.c
Normal file
7
gcc/testsuite/gcc.target/i386/pr90500-2.c
Normal file
@ -0,0 +1,7 @@
|
||||
/* PR middle-end/84723 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-require-ifunc } */
|
||||
|
||||
__attribute__((target_clones("arch=haswell", "default"))) int __tanh() {}
|
||||
__typeof(__tanh) tanhf64 __attribute__((alias("__tanh"),target_clones("arch=haswell", "default"))); /* { dg-error "clones for .target_clones. attribute cannot be created" } */
|
||||
/* { dg-message "'target_clones' cannot be combined with 'alias' attribute" "" { target *-*-* } .-1 } */
|
Loading…
x
Reference in New Issue
Block a user