diff mbox

Don't test ifcvt-3.c on 32-bit i?86 (PR target/67462)

Message ID 20160111171052.GA18720@tucnak.redhat.com
State New
Headers show

Commit Message

Jakub Jelinek Jan. 11, 2016, 5:10 p.m. UTC
Hi!

As mentioned in the PR, this is a test new in GCC 6, that relies on rtx
costs to be right to succeed, and on i?86 (32-bit) they are not right.
While the costs look weird on i?86, it is cost code in generic code, and I'm
afraid changing those is too risky now so late in stage3, so I'm just
proposing to restrict this test to the architectures where it is known to
pass right now.

Tested on x86_64-linux and i686-linux, ok for trunk?

2016-01-11  Jakub Jelinek  <jakub@redhat.com>

	PR target/67462
	* gcc.dg/ifcvt-3.c: Only compile on lp64 targets, include also i?86
	if lp64.


	Jakub

Comments

Jeff Law Jan. 11, 2016, 5:39 p.m. UTC | #1
On 01/11/2016 10:10 AM, Jakub Jelinek wrote:
> Hi!
>
> As mentioned in the PR, this is a test new in GCC 6, that relies on rtx
> costs to be right to succeed, and on i?86 (32-bit) they are not right.
> While the costs look weird on i?86, it is cost code in generic code, and I'm
> afraid changing those is too risky now so late in stage3, so I'm just
> proposing to restrict this test to the architectures where it is known to
> pass right now.
>
> Tested on x86_64-linux and i686-linux, ok for trunk?
>
> 2016-01-11  Jakub Jelinek  <jakub@redhat.com>
>
> 	PR target/67462
> 	* gcc.dg/ifcvt-3.c: Only compile on lp64 targets, include also i?86
> 	if lp64.
>
> --- gcc/testsuite/gcc.dg/ifcvt-3.c.jj	2015-09-03 17:18:33.000000000 +0200
> +++ gcc/testsuite/gcc.dg/ifcvt-3.c	2016-01-09 09:05:42.234836729 +0100
> @@ -1,4 +1,4 @@
> -/* { dg-do compile { target aarch64*-*-* x86_64-*-* }  } */
> +/* { dg-do compile { target { { aarch64*-*-* i?86-*-* x86_64-*-* } && lp64 } } } */
>   /* { dg-options "-fdump-rtl-ce1 -O2" } */
Would it make more sense to xfail the other targets rather than not 
running it at all on those targets?

I'm OK either way, just throwing it out there as another option.

jeff
Jakub Jelinek Jan. 11, 2016, 5:43 p.m. UTC | #2
On Mon, Jan 11, 2016 at 10:39:58AM -0700, Jeff Law wrote:
> On 01/11/2016 10:10 AM, Jakub Jelinek wrote:
> >Hi!
> >
> >As mentioned in the PR, this is a test new in GCC 6, that relies on rtx
> >costs to be right to succeed, and on i?86 (32-bit) they are not right.
> >While the costs look weird on i?86, it is cost code in generic code, and I'm
> >afraid changing those is too risky now so late in stage3, so I'm just
> >proposing to restrict this test to the architectures where it is known to
> >pass right now.
> >
> >Tested on x86_64-linux and i686-linux, ok for trunk?
> >
> >2016-01-11  Jakub Jelinek  <jakub@redhat.com>
> >
> >	PR target/67462
> >	* gcc.dg/ifcvt-3.c: Only compile on lp64 targets, include also i?86
> >	if lp64.
> >
> >--- gcc/testsuite/gcc.dg/ifcvt-3.c.jj	2015-09-03 17:18:33.000000000 +0200
> >+++ gcc/testsuite/gcc.dg/ifcvt-3.c	2016-01-09 09:05:42.234836729 +0100
> >@@ -1,4 +1,4 @@
> >-/* { dg-do compile { target aarch64*-*-* x86_64-*-* }  } */
> >+/* { dg-do compile { target { { aarch64*-*-* i?86-*-* x86_64-*-* } && lp64 } } } */
> >  /* { dg-options "-fdump-rtl-ce1 -O2" } */
> Would it make more sense to xfail the other targets rather than not running
> it at all on those targets?

The testcase already is limited to just 2 targets, and anything relating to
conditional moves is extremely controversial on i?86/x86_64 anyway, because
often it hurts performance instead of improving it.  Plus for pre-i686 there
are no conditional moves and it might be likely even more expensive in real
world.  So, I view it as primarily an aarch64 testcase that happens to pass
these days on x86_64 64-bit too, but is really very beneficial only on
aarch64.

	Jakub
diff mbox

Patch

--- gcc/testsuite/gcc.dg/ifcvt-3.c.jj	2015-09-03 17:18:33.000000000 +0200
+++ gcc/testsuite/gcc.dg/ifcvt-3.c	2016-01-09 09:05:42.234836729 +0100
@@ -1,4 +1,4 @@ 
-/* { dg-do compile { target aarch64*-*-* x86_64-*-* }  } */
+/* { dg-do compile { target { { aarch64*-*-* i?86-*-* x86_64-*-* } && lp64 } } } */
 /* { dg-options "-fdump-rtl-ce1 -O2" } */
 
 typedef long long s64;