On Tue, 13 Feb 2007, Mark Mitchell wrote: > Kaveh R. GHAZI wrote: > > > What I need to work out is what combinations of target and flags this > > problem occurs under. E.g. is this problem sparc-solaris only or does it > > occur on any target using pic? Or is it some subset of all platforms? > > What about targets that default to pic without any extra flags? Etc. > > It will occur on any target where binds_local_p is false for the > function that does not throw exceptions. That is target-dependent, but, > in general, it will fail with -fpic of -fPIC. The reason is that the > default implementation of binds_local_p considers global functions not > to be locally bound in shared libraries (which it determines by checking > flag_shlib) and flag_shlib is generally set if flag_pic is true.
How about this patch for mainline/4.2? I can add it to 4.1 after the release. Tested via "make check" on the current 4.1.x svn on sparc-sun-solaris2.10 using four passes: generic, -fpic, -fPIC and -m64. I verified in the g++.sum file that the nothrow-1.C test is skipped in the -fpic/-fPIC cases but not in the others. 2007-02-13 Kaveh R. Ghazi <[EMAIL PROTECTED]> * g++.dg/tree-ssa/nothrow-1.C: Skip test if -fpic/-fPIC is used. diff -rup orig/egcc-SVN20070211/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C egcc-SVN20070211/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C --- orig/egcc-SVN20070211/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C 2006-01-23 00:09:00.000000000 -0500 +++ egcc-SVN20070211/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C 2007-02-13 21:58:10.160212524 -0500 @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-cfg" } */ +/* { dg-skip-if "" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ double a; void t() {