Several profiling tests fail for MIPS16. The problem is that MIPS has native TLS support, but the ABI has not "yet" been extended to MIPS16. MIPS16 is supposed to be link-compatible with non-MIPS16, so we can't use emultls, and must simply say sorry().
This patch adds dg-require-profiling to the affected tests. The reason I haven't just applied it as obvious is that dg-require-profiling really seems to be a test for link-time and runtime support. There are presumably targets that can't link profiling code but that are nevertheless happily compiling the tests below. So do we want to split the directive into two? I ask the question while hoping the answer is "no". :-) Tested on mips64-linux-gnu. The tests still run for normal MIPS, but are skipped for MIPS16. Richard gcc/testsuite/ * g++.dg/debug/pr46338.C: Add dg-require-profiling. * g++.dg/torture/pr39732.C: Likewise. * g++.dg/torture/pr40642.C: Likewise. * gcc.c-torture/compile/pr44686.c: Likewise. * gcc.dg/20050309-1.c: Likewise. * gcc.dg/20050330-2.c: Likewise. * gcc.dg/20051201-1.c: Likewise. * gcc.dg/gomp/pr27573.c: Likewise. * gcc.dg/pr46255.c: Likewise. * gcc.dg/profile-dir-1.c: Likewise. * gcc.dg/profile-dir-2.c: Likewise. * gcc.dg/profile-dir-3.c: Likewise. * gcc.dg/profile-generate-1.c: Likewise. * gfortran.dg/gomp/pr27573.f90: Likewise. * gcc.dg/profile-generate-3.c: Be specific about the type of profiling required. Index: gcc/testsuite/g++.dg/debug/pr46338.C =================================================================== --- gcc/testsuite/g++.dg/debug/pr46338.C 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/g++.dg/debug/pr46338.C 2011-12-04 11:24:50.000000000 +0000 @@ -1,5 +1,6 @@ // PR debug/46338 // { dg-do compile } +// { dg-require-profiling "-fprofile-generate" } // { dg-options "-O -fprofile-generate -fcompare-debug" } void bar (); Index: gcc/testsuite/g++.dg/torture/pr39732.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr39732.C 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/g++.dg/torture/pr39732.C 2011-12-04 11:24:50.000000000 +0000 @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-fprofile-generate" } */ template<class _CharT> struct char_traits; Index: gcc/testsuite/g++.dg/torture/pr40642.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr40642.C 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/g++.dg/torture/pr40642.C 2011-12-04 11:24:50.000000000 +0000 @@ -1,4 +1,5 @@ // { dg-do compile } +/* { dg-require-profiling "-fprofile-generate" } */ // { dg-options "-fprofile-generate" } // GCC used to ICE with some EH edge missing. Index: gcc/testsuite/gcc.c-torture/compile/pr44686.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr44686.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.c-torture/compile/pr44686.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,3 +1,4 @@ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-fipa-pta -fprofile-generate" } */ void * memcpy (void *a, const void *b, __SIZE_TYPE__ len) Index: gcc/testsuite/gcc.dg/20050309-1.c =================================================================== --- gcc/testsuite/gcc.dg/20050309-1.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/20050309-1.c 2011-12-04 11:24:50.000000000 +0000 @@ -2,6 +2,7 @@ output reloads. */ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O2 -fprofile-generate" } */ char * Index: gcc/testsuite/gcc.dg/20050330-2.c =================================================================== --- gcc/testsuite/gcc.dg/20050330-2.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/20050330-2.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O2 -fprofile-generate" } */ struct S Index: gcc/testsuite/gcc.dg/20051201-1.c =================================================================== --- gcc/testsuite/gcc.dg/20051201-1.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/20051201-1.c 2011-12-04 11:24:50.000000000 +0000 @@ -2,6 +2,7 @@ tree_flow_call_edges_add. */ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O1 -fprofile-generate -Wno-attributes" } */ static __attribute__ ((always_inline)) void Index: gcc/testsuite/gcc.dg/gomp/pr27573.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr27573.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/gomp/pr27573.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,5 +1,6 @@ /* PR middle-end/27573 */ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O2 -fopenmp -fprofile-generate" } */ extern int puts (const char *); Index: gcc/testsuite/gcc.dg/pr46255.c =================================================================== --- gcc/testsuite/gcc.dg/pr46255.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/pr46255.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,5 +1,6 @@ /* PR debug/46255 */ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-fcompare-debug -fprofile-generate -O" } */ int bar (void); Index: gcc/testsuite/gcc.dg/profile-dir-1.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-1.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/profile-dir-1.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O -fprofile-generate=. -fdump-ipa-cgraph" } */ /* { dg-final { scan-ipa-dump " ./profile-dir-1.gcda" "cgraph" } } */ Index: gcc/testsuite/gcc.dg/profile-dir-2.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-2.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/profile-dir-2.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O -fprofile-generate -fdump-ipa-cgraph" } */ /* { dg-final { scan-ipa-dump "/profile-dir-2.gcda" "cgraph" } } */ Index: gcc/testsuite/gcc.dg/profile-dir-3.c =================================================================== --- gcc/testsuite/gcc.dg/profile-dir-3.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/profile-dir-3.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-ipa-cgraph" } */ /* { dg-final { scan-ipa-dump " ./profile-dir-3.gcda" "cgraph" } } */ Index: gcc/testsuite/gcc.dg/profile-generate-1.c =================================================================== --- gcc/testsuite/gcc.dg/profile-generate-1.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/profile-generate-1.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,4 +1,5 @@ /* Bug 16325. */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-O -fprofile-generate" } */ extern void abort (void); Index: gcc/testsuite/gfortran.dg/gomp/pr27573.f90 =================================================================== --- gcc/testsuite/gfortran.dg/gomp/pr27573.f90 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gfortran.dg/gomp/pr27573.f90 2011-12-04 11:24:50.000000000 +0000 @@ -1,5 +1,6 @@ ! PR middle-end/27573 ! { dg-do compile } +! { dg-require-profiling "-fprofile-generate" } ! { dg-options "-O2 -fopenmp -fprofile-generate" } program pr27573 Index: gcc/testsuite/gcc.dg/profile-generate-3.c =================================================================== --- gcc/testsuite/gcc.dg/profile-generate-3.c 2011-12-04 08:52:27.000000000 +0000 +++ gcc/testsuite/gcc.dg/profile-generate-3.c 2011-12-04 11:24:50.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do link } */ -/* { dg-require-profiling "" } */ +/* { dg-require-profiling "-fprofile-generate" } */ /* { dg-options "-fprofile-generate=." } */ int