Message ID | 000f01cfb79a$36c94380$a45bca80$@arm.com |
---|---|
State | New |
Headers | show |
On 08/14/2014 04:31 AM, Bin Cheng wrote: > g++.dg/ext/arm-fp16/fp16-mangle-1.C is failed because GCC now sets > DECL_COMDAT on template instantiations if flag_implicit_templates is in > effect. Then DECL_WEAK will be set accordingly. As a result, checking for > ".global xxxx" would fail on this case. But i in this testcase is an explicit specialization, not an instantiation, so this is a bug. Jason
On Thu, Aug 14, 2014 at 11:18 PM, Jason Merrill <jason@redhat.com> wrote: > On 08/14/2014 04:31 AM, Bin Cheng wrote: >> >> g++.dg/ext/arm-fp16/fp16-mangle-1.C is failed because GCC now sets >> DECL_COMDAT on template instantiations if flag_implicit_templates is in >> effect. Then DECL_WEAK will be set accordingly. As a result, checking >> for >> ".global xxxx" would fail on this case. > > > But i in this testcase is an explicit specialization, not an instantiation, > so this is a bug. Thanks for clarifying, I raised a bug at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62150 Thanks, bin > > Jason >
Index: gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C =================================================================== --- gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C (revision 213809) +++ gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C (working copy) @@ -9,6 +9,6 @@ void f (__fp16 *x) { } /* { dg-final { scan-assembler "\t.global\t_Z1gPDhS_" } } */ void g (__fp16 *x, __fp16 *y) { } -/* { dg-final { scan-assembler "\t.global\t_ZN1SIDhDhE1iE" } } */ -template <typename T, typename U> struct S { static int i; }; +/* { dg-final { scan-assembler "\t.global|weak\t_ZN1SIDhDhE1iE" } } */ +template <typename T, typename U> struct S { static int i; }; template <> int S<__fp16, __fp16>::i = 3;