On Fri, 10 Jun 2011, Steve Ellcey wrote: > I will check in this testsuite fix as obvious if there are no objections.
But... :) > On IA64 and HPPA the test generates global declarations for the function > as well as calls so the scan-assembler-times fails because it finds the > declarations as well as the two calls. The fix is to make the scans more > specific on IA64 and HPPA. This fix follows the example of what was > done in gcc.dg/tree-ssa/loop-1.c. > > Steve Ellcey > s...@cup.hp.com > > > 2011-06-10 Steve Ellcey <s...@cup.hp.com> > > PR testsuite/48727 > * g++.dg/opt/devirt2.C: Fix scan rules for ia64*-*-* and hppa*-*-*. > > > Index: g++.dg/opt/devirt2.C > =================================================================== > --- g++.dg/opt/devirt2.C (revision 174878) > +++ g++.dg/opt/devirt2.C (working copy) > @@ -1,6 +1,10 @@ > // { dg-do compile } > // { dg-options "-O2" } > -// { dg-final { scan-assembler-times "xyzzy" 2 } } > +// The IA64 and HPPA compilers generate external declarations in addition > +// to the call so those scans need to be more specific. > +// { dg-final { scan-assembler-times "xyzzy" 2 { xfail hppa*-*-* ia64*-*-* } > } } JFTR, if you want this to be really right, you should not xfail this part of the test but rather skip it, as the test is at fault, not the targets/gcc. If think it'd be: // { dg-final { scan-assembler-times "xyzzy" 2 { target { ! { hppa*-*-* ia64*-*-* } } } } } > +// { dg-final { scan-assembler-times "br\[^\n\]*xyzzy" 2 { target ia64*-*-* > } } } > +// { dg-final { scan-assembler-times "xyzzy\[^\n\]*,%r" 2 { target > hppa*-*-* } } } > > struct S { S(); virtual void xyzzy(); }; > struct R { int a; S s; R(); }; > brgds, H-P