aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-01-28 14:50:57 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-01-28 14:50:57 +0000
commit16917761718f236f6e40a043a64c746f174870ef (patch)
tree04d0a6593f669b1b42cb3715c6d627ae34587715 /gcc/tree-inline.c
parentb9fc04974250dfa6e2155fc38dcbca39e162b5c7 (diff)
downloadgcc-16917761718f236f6e40a043a64c746f174870ef.zip
gcc-16917761718f236f6e40a043a64c746f174870ef.tar.gz
gcc-16917761718f236f6e40a043a64c746f174870ef.tar.bz2
tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK to a stmt that didn't have one.
2013-01-28 Richard Biener <rguenther@suse.de> * tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK to a stmt that didn't have one. (copy_phis_for_bb): Likewise for PHI arguments. (copy_debug_stmt): Likewise for debug stmts. From-SVN: r195509
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index a7eb86a..2a1b692 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1198,7 +1198,6 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
{
gimple copy = NULL;
struct walk_stmt_info wi;
- tree new_block;
bool skip_first = false;
/* Begin by recognizing trees that we'll completely rewrite for the
@@ -1458,19 +1457,15 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
}
/* If STMT has a block defined, map it to the newly constructed
- block. When inlining we want statements without a block to
- appear in the block of the function call. */
- new_block = id->block;
+ block. */
if (gimple_block (copy))
{
tree *n;
n = (tree *) pointer_map_contains (id->decl_map, gimple_block (copy));
gcc_assert (n);
- new_block = *n;
+ gimple_set_block (copy, *n);
}
- gimple_set_block (copy, new_block);
-
if (gimple_debug_bind_p (copy) || gimple_debug_source_bind_p (copy))
return copy;
@@ -1987,7 +1982,6 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
edge old_edge = find_edge ((basic_block) new_edge->src->aux, bb);
tree arg;
tree new_arg;
- tree block = id->block;
edge_iterator ei2;
location_t locus;
@@ -2015,19 +2009,18 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
inserted = true;
}
locus = gimple_phi_arg_location_from_edge (phi, old_edge);
- block = id->block;
if (LOCATION_BLOCK (locus))
{
tree *n;
n = (tree *) pointer_map_contains (id->decl_map,
LOCATION_BLOCK (locus));
gcc_assert (n);
- block = *n;
+ locus = COMBINE_LOCATION_DATA (line_table, locus, *n);
}
+ else
+ locus = LOCATION_LOCUS (locus);
- add_phi_arg (new_phi, new_arg, new_edge, block ?
- COMBINE_LOCATION_DATA (line_table, locus, block) :
- LOCATION_LOCUS (locus));
+ add_phi_arg (new_phi, new_arg, new_edge, locus);
}
}
}
@@ -2324,14 +2317,11 @@ copy_debug_stmt (gimple stmt, copy_body_data *id)
tree t, *n;
struct walk_stmt_info wi;
- t = id->block;
if (gimple_block (stmt))
{
n = (tree *) pointer_map_contains (id->decl_map, gimple_block (stmt));
- if (n)
- t = *n;
+ gimple_set_block (stmt, n ? *n : id->block);
}
- gimple_set_block (stmt, t);
/* Remap all the operands in COPY. */
memset (&wi, 0, sizeof (wi));