diff mbox

[testsuite] Fix g++.dg/opt/devirt2.C scanning, PR 48727

Message ID 201106101628.p5AGSXG20686@lucas.cup.hp.com
State New
Headers show

Commit Message

Steve Ellcey June 10, 2011, 4:28 p.m. UTC
I will check in this testsuite fix as obvious if there are no objections.
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
sje@cup.hp.com


2011-06-10  Steve Ellcey  <sje@cup.hp.com>

	PR testsuite/48727
	* g++.dg/opt/devirt2.C: Fix scan rules for ia64*-*-* and hppa*-*-*.

Comments

Mike Stump June 11, 2011, 5:31 p.m. UTC | #1
On Jun 10, 2011, at 9:28 AM, Steve Ellcey wrote:
> I will check in this testsuite fix as obvious if there are no objections.

Thanks for the comments.  When doing a port, having a comment on other port's issues with a testcase, is useful, as you get to say, gosh, I'm in that class too, and just blindly follow the same path for the same reason.
Hans-Peter Nilsson June 15, 2011, 4:51 p.m. UTC | #2
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
> sje@cup.hp.com
>
>
> 2011-06-10  Steve Ellcey  <sje@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
diff mbox

Patch

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*-*-* } } }
+// { 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(); };