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

login
register
mail settings
Submitter Steve Ellcey
Date June 10, 2011, 4:28 p.m.
Message ID <201106101628.p5AGSXG20686@lucas.cup.hp.com>
Download mbox | patch
Permalink /patch/99935/
State New
Headers show

Comments

Steve Ellcey - June 10, 2011, 4:28 p.m.
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*-*-*.
Mike Stump - June 11, 2011, 5:31 p.m.
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.
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

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(); };