diff options
author | Richard Guenther <rguenther@suse.de> | 2012-05-04 11:47:06 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-05-04 11:47:06 +0000 |
commit | 8bb50e5ce09c531440ec0c1e73b24c3b0a945c69 (patch) | |
tree | 6f50d2bd7ecee321c80696963ea3eb2bb17ad755 /gcc | |
parent | efe7068bc9c80858b6025e737eafb90b0a7882c5 (diff) | |
download | gcc-8bb50e5ce09c531440ec0c1e73b24c3b0a945c69.zip gcc-8bb50e5ce09c531440ec0c1e73b24c3b0a945c69.tar.gz gcc-8bb50e5ce09c531440ec0c1e73b24c3b0a945c69.tar.bz2 |
re PR lto/50602 (ICE in tree_nrv, at tree-nrv.c:155 during large LTO build)
2012-05-04 Richard Guenther <rguenther@suse.de>
PR lto/50602
* lto-wrapper.c (merge_and_complain): Complain about mismatches
of -freg-struct-return and -fpcc-struct-return.
(run_gcc): Pass through -freg-struct-return and -fpcc-struct-return
from the input file options and ignore those from the link
command line.
From-SVN: r187155
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/lto-wrapper.c | 18 |
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 72e3264..6403309 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2012-05-04 Richard Guenther <rguenther@suse.de> + PR lto/50602 + * lto-wrapper.c (merge_and_complain): Complain about mismatches + of -freg-struct-return and -fpcc-struct-return. + (run_gcc): Pass through -freg-struct-return and -fpcc-struct-return + from the input file options and ignore those from the link + command line. + +2012-05-04 Richard Guenther <rguenther@suse.de> + PR tree-optimization/53168 * tree-ssa-pre.c (phi_translate_1): Only handle type-punned memory reads when the result is a constant we can pun. diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c index 1c9aa83..b656db2 100644 --- a/gcc/lto-wrapper.c +++ b/gcc/lto-wrapper.c @@ -414,6 +414,16 @@ merge_and_complain (struct cl_decoded_option **decoded_options, if (j == *decoded_options_count) append_option (decoded_options, decoded_options_count, foption); break; + + case OPT_freg_struct_return: + case OPT_fpcc_struct_return: + for (j = 0; j < *decoded_options_count; ++j) + if ((*decoded_options)[j].opt_index == foption->opt_index) + break; + if (j == *decoded_options_count) + fatal ("Option %s not used consistently in all LTO input files", + foption->orig_option_with_args_text); + break; } } } @@ -558,6 +568,8 @@ run_gcc (unsigned argc, char *argv[]) case OPT_fcommon: case OPT_fexceptions: case OPT_fgnu_tm: + case OPT_freg_struct_return: + case OPT_fpcc_struct_return: break; default: @@ -619,6 +631,12 @@ run_gcc (unsigned argc, char *argv[]) /* We've handled these LTO options, do not pass them on. */ continue; + case OPT_freg_struct_return: + case OPT_fpcc_struct_return: + /* Ignore these, they are determined by the input files. + ??? We fail to diagnose a possible mismatch here. */ + continue; + default: break; } |