From 3740bda6657ed84863bc2d69889b39bd859454d7 Mon Sep 17 00:00:00 2001 From: Paulo Matos Date: Tue, 4 Mar 2014 12:45:06 +0100 Subject: [PATCH] tree-streamer.c (record_common_node): Assert we don't record nodes with type double. 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-04 Paulo Matos * gcc.dg/lto/pr55113_0.c: New testcase. From-SVN: r208312 --- gcc/ChangeLog | 8 ++++++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/lto/pr55113_0.c | 13 +++++++++++++ gcc/tree-streamer.c | 11 ++++++++--- 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/lto/pr55113_0.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2faa849..57bb1d5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +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-04 Richard Biener PR lto/60405 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3a683db..3d8b545 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-03-04 Paulo Matos + + * gcc.dg/lto/pr55113_0.c: New testcase. + 2014-03-04 Paolo Carlini PR c++/60376 diff --git a/gcc/testsuite/gcc.dg/lto/pr55113_0.c b/gcc/testsuite/gcc.dg/lto/pr55113_0.c new file mode 100644 index 0000000..8ef11dc --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr55113_0.c @@ -0,0 +1,13 @@ +/* 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 af9461e..4b3e3e4 100644 --- a/gcc/tree-streamer.c +++ b/gcc/tree-streamer.c @@ -264,7 +264,8 @@ 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 != boolean_false_node + && node != double_type_node); /* We have to make sure to fill exactly the same number of elements for all frontends. That can include NULL trees. @@ -315,10 +316,14 @@ 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 boolean type and constants. They are frontend dependent. + Skip double type, frontend dependent due to -fshort-double. */ if (i != TI_BOOLEAN_TYPE && i != TI_BOOLEAN_FALSE - && i != TI_BOOLEAN_TRUE) + && i != TI_BOOLEAN_TRUE + && i != TI_DOUBLE_TYPE + && i != TI_COMPLEX_DOUBLE_TYPE + && i != TI_DOUBLE_PTR_TYPE) record_common_node (cache, global_trees[i]); } -- 2.7.4