This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix up gcc.dg/type-convert-var.c testcase (was Re: [GCC][middle-end] Add rules to strip away unneeded type casts in expressions (2nd patch))
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Biener <rguenther at suse dot de>, Rainer Orth <ro at cebitec dot uni-bielefeld dot de>, Mike Stump <mikestump at comcast dot net>, "Joseph S. Myers" <joseph at codesourcery dot com>, Tamar Christina <Tamar dot Christina at arm dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 30 Jul 2019 08:57:39 +0200
- Subject: [PATCH] Fix up gcc.dg/type-convert-var.c testcase (was Re: [GCC][middle-end] Add rules to strip away unneeded type casts in expressions (2nd patch))
- References: <20190625083126.GA19632@arm.com> <DB6PR0802MB230918BEA271728437E6CA57FFE30@DB6PR0802MB2309.eurprd08.prod.outlook.com> <alpine.LSU.2.20.1906251044350.10704@zhemvz.fhfr.qr> <20190702094115.GA22370@arm.com> <alpine.LSU.2.20.1907021214070.2976@zhemvz.fhfr.qr> <20190702164351.GA12197@arm.com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
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 <jakub@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