[testsuite] PR90106 Fix cdce3.c testcase

Message ID CAKdteOZQiKqmTo_LgLWzDO5tnhaUmsdTsF7Vn2EBAcs3ZGo6hQ@mail.gmail.com
State New
Headers show
Series
  • [testsuite] PR90106 Fix cdce3.c testcase
Related show

Commit Message

Christophe Lyon May 20, 2019, noon
Hi,

As discussed in the PR, the new cdce3.c test fails on
arm-linux-gnueabi, and passes on arm-linux-gnueabihf.

On arm-linux-gnueabi, the generated code is:
        .arm
        .fpu softvfp
        .type   foo, %function
foo:
        b       sqrtf

on arm-liunx-gnueabihf, it is:
        .arm
        .fpu neon
        .type   foo, %function
foo:
        vcmp.f32        s0, #0
        vmrs    APSR_nzcv, FPSCR
        vmov.f32        s15, s0
        bmi     .L10
        vsqrt.f32       s0, s15
        bx      lr
.L10:
        b       sqrtf

Actually both generate a tail-call, but only the latter says "function
call is shrink-wrapped into error conditions." in the dumps.

According to what JunMa says in the PR, it seems we want to restrict
this testcase to hard-float cases, so that's what this small patch
does.

OK?

Christophe

2019-05-20  Christophe Lyon  <christophe.lyon@linaro.org>

	PR tree-optimization/90106
	* gcc.dg/cdce3.c: Add hard_float effective target.

Comments

Jeff Law May 20, 2019, 2:47 p.m. | #1
On 5/20/19 6:00 AM, Christophe Lyon wrote:
> Hi,

> 

> As discussed in the PR, the new cdce3.c test fails on

> arm-linux-gnueabi, and passes on arm-linux-gnueabihf.

> 

> On arm-linux-gnueabi, the generated code is:

>         .arm

>         .fpu softvfp

>         .type   foo, %function

> foo:

>         b       sqrtf

> 

> on arm-liunx-gnueabihf, it is:

>         .arm

>         .fpu neon

>         .type   foo, %function

> foo:

>         vcmp.f32        s0, #0

>         vmrs    APSR_nzcv, FPSCR

>         vmov.f32        s15, s0

>         bmi     .L10

>         vsqrt.f32       s0, s15

>         bx      lr

> .L10:

>         b       sqrtf

> 

> Actually both generate a tail-call, but only the latter says "function

> call is shrink-wrapped into error conditions." in the dumps.

> 

> According to what JunMa says in the PR, it seems we want to restrict

> this testcase to hard-float cases, so that's what this small patch

> does.

> 

> OK?

OK
jeff

Patch

diff --git a/gcc/testsuite/gcc.dg/cdce3.c b/gcc/testsuite/gcc.dg/cdce3.c
index 8a74379..7e85d8a 100644
--- a/gcc/testsuite/gcc.dg/cdce3.c
+++ b/gcc/testsuite/gcc.dg/cdce3.c
@@ -1,6 +1,7 @@ 
 /* { dg-do compile } */
+/* { dg-require-effective-target hard_float } */
 /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -fdump-tree-optimized" } */
-/* { dg-final { scan-tree-dump "cdce3.c:9: \[^\n\r]* function call is shrink-wrapped into error conditions\." "cdce" } } */
+/* { dg-final { scan-tree-dump "cdce3.c:10: \[^\n\r]* function call is shrink-wrapped into error conditions\." "cdce" } } */
 /* { dg-final { scan-tree-dump "sqrtf \\(\[^\n\r]*\\); \\\[tail call\\\]" "optimized" } } */
 
 float sqrtf (float);