From f42c637eb7775b2f2a564526f314143fdc156df1 Mon Sep 17 00:00:00 2001 From: Paulo Matos Date: Sat, 8 Mar 2014 11:54:05 +0100 Subject: [PATCH] lto-wrapper.c (merge_and_complain): Ensure -fshort-double is used consistently accross all TUs. 2014-03-08 Paulo Matos Richard Biener * lto-wrapper.c (merge_and_complain): Ensure -fshort-double is used consistently accross all TUs. (run_gcc): Enable -fshort-double automatically at link at link-time and disallow override. 2014-03-08 Paulo Matos * c.opt: Enable LTO FE for fshort-double. 2014-03-08 Paulo Matos * gcc.dg/lto/pr55113_0.c: New testcase. 2014-03-08 Paulo Matos * lto-lang.c (lto_init): Pass flag_short_double to build_common_tree_nodes. Co-Authored-By: Richard Biener From-SVN: r208428 --- gcc/ChangeLog | 8 ++++++++ gcc/c-family/ChangeLog | 4 ++++ gcc/c-family/c.opt | 2 +- gcc/lto-wrapper.c | 3 +++ gcc/lto/ChangeLog | 5 +++++ gcc/lto/lto-lang.c | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/lto/pr55113_0.c | 13 +++++++++++++ 8 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/lto/pr55113_0.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5611246ed95a..89880064b63f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-03-08 Paulo Matos + Richard Biener + + * lto-wrapper.c (merge_and_complain): Ensure -fshort-double is used + consistently accross all TUs. + (run_gcc): Enable -fshort-double automatically at link at link-time + and disallow override. + 2014-03-08 Richard Sandiford PR target/58271 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 6830fd572715..7d49933c287b 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2014-03-08 Paulo Matos + + * c.opt: Enable LTO FE for fshort-double. + 2014-03-07 Jason Merrill * c.opt: Add -std=c++14. diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 93fb7c25b1de..625c3ba32362 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -1141,7 +1141,7 @@ C++ ObjC++ Optimization Var(flag_rtti) Init(1) Generate run time type descriptor information fshort-double -C ObjC C++ ObjC++ Optimization Var(flag_short_double) +C ObjC C++ ObjC++ LTO Optimization Var(flag_short_double) Use the same size for double as for float fshort-enums diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c index cf587cbc7573..eb5611bc2244 100644 --- a/gcc/lto-wrapper.c +++ b/gcc/lto-wrapper.c @@ -452,6 +452,7 @@ merge_and_complain (struct cl_decoded_option **decoded_options, case OPT_freg_struct_return: case OPT_fpcc_struct_return: + case OPT_fshort_double: for (j = 0; j < *decoded_options_count; ++j) if ((*decoded_options)[j].opt_index == foption->opt_index) break; @@ -677,6 +678,7 @@ run_gcc (unsigned argc, char *argv[]) case OPT_fgnu_tm: case OPT_freg_struct_return: case OPT_fpcc_struct_return: + case OPT_fshort_double: case OPT_ffp_contract_: case OPT_fwrapv: case OPT_ftrapv: @@ -748,6 +750,7 @@ run_gcc (unsigned argc, char *argv[]) case OPT_freg_struct_return: case OPT_fpcc_struct_return: + case OPT_fshort_double: /* Ignore these, they are determined by the input files. ??? We fail to diagnose a possible mismatch here. */ continue; diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 815d0c174c52..7a2940e16e30 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,8 @@ +2014-03-08 Paulo Matos + + * lto-lang.c (lto_init): Pass flag_short_double to + build_common_tree_nodes. + 2014-02-14 Jan Hubicka PR lto/60295 diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c index 28eac6f3e9f7..f92e884e9e74 100644 --- a/gcc/lto/lto-lang.c +++ b/gcc/lto/lto-lang.c @@ -1158,7 +1158,7 @@ lto_init (void) flag_generate_lto = (flag_wpa != NULL); /* Create the basic integer types. */ - build_common_tree_nodes (flag_signed_char, /*short_double=*/false); + build_common_tree_nodes (flag_signed_char, flag_short_double); /* The global tree for the main identifier is filled in by language-specific front-end initialization that is not run in the diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f29b5a427d06..318f5197182f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-03-08 Paulo Matos + + * gcc.dg/lto/pr55113_0.c: New testcase. + 2014-03-08 Adam Butcher PR c++/60033 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 000000000000..8ef11dc47f3b --- /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; +} -- 2.47.2