From a74158c7f261a02fb5d0b7c7f7dc16be298d0772 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 6 Mar 2014 11:19:13 +0000 Subject: [PATCH] re PR middle-end/60445 (473.astar miscompares with -Ofast) 2014-03-06 Richard Biener PR middle-end/60445 PR lto/60424 PR lto/60427 Revert 2014-03-04 Paulo Matos * 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 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/testsuite/ChangeLog | 10 ++++++++++ gcc/testsuite/gcc.dg/lto/pr55113_0.c | 13 ------------- gcc/tree-streamer.c | 11 +++-------- 4 files changed, 27 insertions(+), 21 deletions(-) delete mode 100644 gcc/testsuite/gcc.dg/lto/pr55113_0.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a5b0069ea2..7754668f62f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2014-03-06 Richard Biener + + PR middle-end/60445 + PR lto/60424 + PR lto/60427 + Revert + 2014-03-04 Paulo Matos + + * 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 * gcc.c (PLUGIN_COND): Always enable unless -fno-use-linker-plugin diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d0b1e70facf..82d19e8aebd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2014-03-06 Richard Biener + + PR middle-end/60445 + PR lto/60424 + PR lto/60427 + Revert + 2014-03-04 Paulo Matos + + * gcc.dg/lto/pr55113_0.c: New testcase. + 2014-03-05 Jakub Jelinek PR testsuite/59308 diff --git a/gcc/testsuite/gcc.dg/lto/pr55113_0.c b/gcc/testsuite/gcc.dg/lto/pr55113_0.c deleted file mode 100644 index 8ef11dc47f3..00000000000 --- a/gcc/testsuite/gcc.dg/lto/pr55113_0.c +++ /dev/null @@ -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; -} diff --git a/gcc/tree-streamer.c b/gcc/tree-streamer.c index 4b3e3e4cd5a..af9461e7710 100644 --- a/gcc/tree-streamer.c +++ b/gcc/tree-streamer.c @@ -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]); }