aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorDehao Chen <dehao@google.com>2012-09-24 20:50:46 +0000
committerDehao Chen <dehao@gcc.gnu.org>2012-09-24 20:50:46 +0000
commit60478b9caf9da70dc1301c863bb7c26a1ab5da9f (patch)
tree80f00a7cc662e1da1a5ad8e49fc56fc350f8d920 /gcc/tree-cfg.c
parent55826ab6d1d050a8892e6dc45cf035c94db98dd0 (diff)
downloadgcc-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.c6
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