Hi, 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.
This patch fixes this by relaxing scanning string into ".global|weak xxxx" just in case it's still global if some options are specified explicitly. Since the change is made by https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=213307. Hi Jason, could you help me here that I understood the issue correctly? Thanks very much. Thanks, bin gcc/testsuite/ChangeLog 2014-08-14 Bin Cheng <bin.ch...@arm.com> * g++.dg/ext/arm-fp16/fp16-mangle-1.C: Also check .weak.
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;