re PR middle-end/60445 (473.astar miscompares with -Ofast)

2014-03-06  Richard Biener  <rguenther@suse.de>

	PR middle-end/60445
	PR lto/60424
	PR lto/60427
	Revert
	2014-03-04  Paulo Matos  <paulo@matos-sorge.com>

        * tree-streamer.c (record_common_node): Assert we don't record
        nodes with type double.
        (preload_common_node): Skip type double, complex double and
        double pointer since it is now frontend dependent due to
        fshort-double option.

        * gcc.dg/lto/pr55113_0.c: New testcase.

From-SVN: r208379
This commit is contained in:
Richard Biener 2014-03-06 11:19:13 +00:00 committed by Richard Biener
parent d9d8f6b1e6
commit a74158c7f2
4 changed files with 27 additions and 21 deletions

View File

@ -1,3 +1,17 @@
2014-03-06 Richard Biener <rguenther@suse.de>
PR middle-end/60445
PR lto/60424
PR lto/60427
Revert
2014-03-04 Paulo Matos <paulo@matos-sorge.com>
* tree-streamer.c (record_common_node): Assert we don't record
nodes with type double.
(preload_common_node): Skip type double, complex double and
double pointer since it is now frontend dependent due to
fshort-double option.
2014-03-06 Richard Biener <rguenther@suse.de>
* gcc.c (PLUGIN_COND): Always enable unless -fno-use-linker-plugin

View File

@ -1,3 +1,13 @@
2014-03-06 Richard Biener <rguenther@suse.de>
PR middle-end/60445
PR lto/60424
PR lto/60427
Revert
2014-03-04 Paulo Matos <paulo@matos-sorge.com>
* gcc.dg/lto/pr55113_0.c: New testcase.
2014-03-05 Jakub Jelinek <jakub@redhat.com>
PR testsuite/59308

View File

@ -1,13 +0,0 @@
/* PR 55113 */
/* { dg-lto-do link } */
/* { dg-lto-options { { -flto -fshort-double -O0 } } }*/
/* { dg-skip-if "PR60410" { { x86_64-*-* i?86-*-* } && lp64 } } */
int
main(void)
{
float a = 1.0;
float b = 2.0;
double f = a + b * 1e-12;
return (int)f - 1;
}

View File

@ -264,8 +264,7 @@ record_common_node (struct streamer_tree_cache_d *cache, tree node)
gcc_checking_assert (node != boolean_type_node
&& node != boolean_true_node
&& node != boolean_false_node
&& node != double_type_node);
&& node != boolean_false_node);
/* We have to make sure to fill exactly the same number of
elements for all frontends. That can include NULL trees.
@ -316,14 +315,10 @@ preload_common_nodes (struct streamer_tree_cache_d *cache)
record_common_node (cache, sizetype_tab[i]);
for (i = 0; i < TI_MAX; i++)
/* Skip boolean type and constants. They are frontend dependent.
Skip double type, frontend dependent due to -fshort-double. */
/* Skip boolean type and constants, they are frontend dependent. */
if (i != TI_BOOLEAN_TYPE
&& i != TI_BOOLEAN_FALSE
&& i != TI_BOOLEAN_TRUE
&& i != TI_DOUBLE_TYPE
&& i != TI_COMPLEX_DOUBLE_TYPE
&& i != TI_DOUBLE_PTR_TYPE)
&& i != TI_BOOLEAN_TRUE)
record_common_node (cache, global_trees[i]);
}