aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-inline.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f4cd281..939b7bc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-01 Richard Guenther <rguenther@suse.de>
+
+ * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
+ to the block of the call when remapping a type.
+
2009-12-01 Martin Jambor <mjambor@suse.cz>
* cgraph.h (struct cgraph_edge): Reorder fields. Make loop_nest
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 10baf62..3c90941 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1093,10 +1093,10 @@ copy_tree_body_r (tree *tp, int *walk_subtrees, void *data)
/* If EXPR has block defined, map it to newly constructed block.
When inlining we want EXPRs without block appear in the block
- of function call. */
+ of function call if we are not remapping a type. */
if (EXPR_P (*tp))
{
- new_block = id->block;
+ new_block = id->remapping_type_depth == 0 ? id->block : NULL;
if (TREE_BLOCK (*tp))
{
tree *n;