diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/gimple.c | 10 | ||||
-rw-r--r-- | gcc/tree-ssa-operands.c | 6 |
3 files changed, 13 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b37d58b..d323a62 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 4675d14..3183711 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 7e2600d..57f443f 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); |