On Tue, Jul 02, 2019 at 04:43:54PM +0000, Tamar Christina wrote:
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/type-convert-var.c
> @@ -0,0 +1,9 @@
> +/* { dg-do compile } */
> +/* { dg-additional-options "-O1 -fdump-tree-optimized" } */
> +void foo (float a, float b, float *c)
> +{
> +  double e = (double)a * (double)b;
> +  *c = (float)e;
> +}
> +
> +/* { dg-final { scan-tree-dump-not {double} "optimized" } } */
> 

This new testcase FAILs e.g. on i686-linux.  The problem is that
with no dg-options, the testcase options default to -ansi, which
implies -fexcess-precision=standard.  On i686-linux, that is conversion to
long double which must (and does) survive until expansion.

Fixed by using -fexcess-precision=fast, tested on x86_64-linux and
i686-linux, ok for trunk?

2019-07-30  Jakub Jelinek  <ja...@redhat.com>

        * gcc.dg/type-convert-var.c: Add -0fexcess-precision=fast to
        dg-additional-options.

--- gcc/testsuite/gcc.dg/type-convert-var.c.jj  2019-07-28 17:29:27.156351325 
+0200
+++ gcc/testsuite/gcc.dg/type-convert-var.c     2019-07-30 08:51:33.349558035 
+0200
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-additional-options "-O1 -fdump-tree-optimized" } */
+/* { dg-additional-options "-fexcess-precision=fast -O1 -fdump-tree-optimized" 
} */
 void foo (float a, float b, float *c)
 {
   double e = (double)a * (double)b;


        Jakub

Reply via email to