From: Tom de Vries Date: Sun, 22 Feb 2015 10:54:56 +0000 (+0000) Subject: Make pr30957-1.c pass rather xfail X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ffefa9288ab95b06b1dfed95e7235f4c09619a91;p=gcc.git Make pr30957-1.c pass rather xfail 2015-02-22 Tom de Vries * gcc.dg/pr30957-1.c: Make pr30957-1.c pass rather xfail. From-SVN: r220893 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e91532cb6ef..5ef35b9292d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-02-22 Tom de Vries + + * gcc.dg/pr30957-1.c: Make pr30957-1.c pass rather xfail. + 2015-02-21 Arnaud Charlet PR ada/65156 diff --git a/gcc/testsuite/gcc.dg/pr30957-1.c b/gcc/testsuite/gcc.dg/pr30957-1.c index 65b98fa533d..f34c6e53703 100644 --- a/gcc/testsuite/gcc.dg/pr30957-1.c +++ b/gcc/testsuite/gcc.dg/pr30957-1.c @@ -1,12 +1,9 @@ -/* { dg-do run { xfail *-*-* } } */ -/* We don't (and don't want to) perform this optimisation on soft-float - targets, where each addition is a library call. This test requires - -fassociative-math for enabling the variable-expansion as well as - -fsigned-zeros for honoring the sign of zero; but - they can not co-exist; also under -funsafe-math-optimizations, so we - expect it to fail. */ +/* { dg-do run } */ +/* We don't (and don't want to) perform this optimisation on soft-float targets, + where each addition is a library call. / /* { dg-require-effective-target hard_float } */ -/* { dg-options "-O2 -funroll-loops -funsafe-math-optimizations -fvariable-expansion-in-unroller -fdump-rtl-loop2_unroll" } */ +/* -fassociative-math requires -fno-trapping-math and -fno-signed-zeros. */ +/* { dg-options "-O2 -funroll-loops -fassociative-math -fno-trapping-math -fno-signed-zeros -fvariable-expansion-in-unroller -fdump-rtl-loop2_unroll" } */ extern void abort (void); extern void exit (int); @@ -26,12 +23,15 @@ foo (float d, int n) int main () { - if (__builtin_copysignf (1.0, foo (0.0 / -5.0, 10)) != -1.0) + /* When compiling standard compliant we expect foo to return -0.0. But the + variable expansion during unrolling optimization (for this testcase enabled + by non-compliant -fassociative-math) instantiates copy(s) of the + accumulator which it initializes with +0.0. Hence we expect that foo + returns +0.0. */ + if (__builtin_copysignf (1.0, foo (0.0 / -5.0, 10)) != 1.0) abort (); exit (0); } /* { dg-final { scan-rtl-dump "Expanding Accumulator" "loop2_unroll" } } */ /* { dg-final { cleanup-rtl-dump "loop*" } } */ - -