summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-04-08 13:22:32 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-04-08 13:22:32 +0000
commit0f8c63cc10c27905f6d6fa553d3be08a416b2e1f (patch)
tree35952a70f683e580d7b134e3b637e28c5ab22fa8
parent5e5a425e73a86f3edbbc1339760e3d8153966389 (diff)
downloadgcc-0f8c63cc10c27905f6d6fa553d3be08a416b2e1f.tar.gz
gimple.c (gimple_set_modified): Do not queue calls to MODIFIED_NORETURN_CALLS here ...
2011-04-08 Richard Guenther <rguenther@suse.de> * gimple.c (gimple_set_modified): Do not queue calls to MODIFIED_NORETURN_CALLS here ... * tree-ssa-operands.c (update_stmt_operands): ... but here. From-SVN: r172182
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimple.c10
-rw-r--r--gcc/tree-ssa-operands.c6
3 files changed, 13 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b37d58baecf..d323a62e80e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2011-04-08 Richard Guenther <rguenther@suse.de>
+ * gimple.c (gimple_set_modified): Do not queue calls to
+ MODIFIED_NORETURN_CALLS here ...
+ * tree-ssa-operands.c (update_stmt_operands): ... but here.
+
+2011-04-08 Richard Guenther <rguenther@suse.de>
+
PR lto/48467
* toplev.c (lang_dependent_init): Do not open asm_out_file
in WPA mode, nor perform debug machinery initialization.
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 4675d14193e..3183711b96f 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -2254,15 +2254,7 @@ void
gimple_set_modified (gimple s, bool modifiedp)
{
if (gimple_has_ops (s))
- {
- s->gsbase.modified = (unsigned) modifiedp;
-
- if (modifiedp
- && cfun->gimple_df
- && is_gimple_call (s)
- && gimple_call_noreturn_p (s))
- VEC_safe_push (gimple, gc, MODIFIED_NORETURN_CALLS (cfun), s);
- }
+ s->gsbase.modified = (unsigned) modifiedp;
}
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 7e2600d6e6d..57f443fe2bc 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -1134,6 +1134,12 @@ update_stmt_operands (gimple stmt)
timevar_push (TV_TREE_OPS);
+ /* If the stmt is a noreturn call queue it to be processed by
+ split_bbs_on_noreturn_calls during cfg cleanup. */
+ if (is_gimple_call (stmt)
+ && gimple_call_noreturn_p (stmt))
+ VEC_safe_push (gimple, gc, MODIFIED_NORETURN_CALLS (cfun), stmt);
+
gcc_assert (gimple_modified_p (stmt));
build_ssa_operands (stmt);
gimple_set_modified (stmt, false);