aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-05-04 11:47:06 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-05-04 11:47:06 +0000
commit8bb50e5ce09c531440ec0c1e73b24c3b0a945c69 (patch)
tree6f50d2bd7ecee321c80696963ea3eb2bb17ad755 /gcc
parentefe7068bc9c80858b6025e737eafb90b0a7882c5 (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/lto-wrapper.c18
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;
}