diff options
author | Dehao Chen <dehao@google.com> | 2012-09-24 20:50:46 +0000 |
---|---|---|
committer | Dehao Chen <dehao@gcc.gnu.org> | 2012-09-24 20:50:46 +0000 |
commit | 60478b9caf9da70dc1301c863bb7c26a1ab5da9f (patch) | |
tree | 80f00a7cc662e1da1a5ad8e49fc56fc350f8d920 /gcc/tree-cfg.c | |
parent | 55826ab6d1d050a8892e6dc45cf035c94db98dd0 (diff) | |
download | gcc-60478b9caf9da70dc1301c863bb7c26a1ab5da9f.zip gcc-60478b9caf9da70dc1301c863bb7c26a1ab5da9f.tar.gz gcc-60478b9caf9da70dc1301c863bb7c26a1ab5da9f.tar.bz2 |
tree-cfg.c (move_stmt_op): Reset the expr block only when necessary.
2012-09-24 Dehao Chen <dehao@google.com>
* tree-cfg.c (move_stmt_op): Reset the expr block only
when necessary.
(move_block_to_fn): Reset the edge's goto block even
when the goto locus is unknown.
From-SVN: r191680
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index eea9a5c..774e74f 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -6013,7 +6013,9 @@ move_stmt_op (tree *tp, int *walk_subtrees, void *data) if (EXPR_P (t)) { - if (TREE_BLOCK (t)) + if (TREE_BLOCK (t) == p->orig_block + || (p->orig_block == NULL_TREE + && TREE_BLOCK (t) == NULL_TREE)) TREE_SET_BLOCK (t, p->new_block); } else if (DECL_P (t) || TREE_CODE (t) == SSA_NAME) @@ -6315,7 +6317,7 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, } FOR_EACH_EDGE (e, ei, bb->succs) - if (!IS_UNKNOWN_LOCATION (e->goto_locus)) + if (e->goto_locus != UNKNOWN_LOCATION) { tree block = LOCATION_BLOCK (e->goto_locus); if (d->orig_block == NULL_TREE |