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

Reply via email to