aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2007-11-26 06:24:54 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2007-11-26 06:24:54 +0000
commit3c8da8a5e064ffaea9f97a118844f0ace157ab81 (patch)
tree9f3970e56f7699f3fe29ddd7cc3e98c94ed238ca /gcc
parent573b3837c6c60c904934b16dea1c9679005b68f6 (diff)
downloadgcc-3c8da8a5e064ffaea9f97a118844f0ace157ab81.zip
gcc-3c8da8a5e064ffaea9f97a118844f0ace157ab81.tar.gz
gcc-3c8da8a5e064ffaea9f97a118844f0ace157ab81.tar.bz2
tree-ssa-live.c (remove_unused_scope_block_p): Drop declarations and blocks only after inlining.
* tree-ssa-live.c (remove_unused_scope_block_p): Drop declarations and blocks only after inlining. Check that non-empty blocks are not dropped. * tree-inline.c (expand_call_inline): Check that functions are not inlined too late. From-SVN: r130424
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-inline.c2
-rw-r--r--gcc/tree-ssa-live.c16
3 files changed, 23 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 46cfbac..7dac519 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2007-11-26 Alexandre Oliva <aoliva@redhat.com>, Jan Hubicka <jh@suse.cz>
+
+ * tree-ssa-live.c (remove_unused_scope_block_p): Drop
+ declarations and blocks only after inlining. Check that
+ non-empty blocks are not dropped.
+ * tree-inline.c (expand_call_inline): Check that functions are
+ not inlined too late.
+
2007-11-26 Ben Elliston <bje@au.ibm.com>
* unwind-dw2-fde.c: Fix comment typo.
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index cb161db..e7fba91 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -2652,6 +2652,8 @@ expand_call_inline (basic_block bb, tree stmt, tree *tp, void *data)
id->src_cfun = DECL_STRUCT_FUNCTION (fn);
id->call_expr = t;
+ gcc_assert (!id->src_cfun->after_inlining);
+
initialize_inlined_parameters (id, t, fn, bb);
if (DECL_INITIAL (fn))
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c
index f12de81..51d682c 100644
--- a/gcc/tree-ssa-live.c
+++ b/gcc/tree-ssa-live.c
@@ -500,8 +500,15 @@ remove_unused_scope_block_p (tree scope)
/* When we are not doing full debug info, we however can keep around
only the used variables for cfgexpand's memory packing saving quite
a lot of memory. */
- else if (debug_info_level != DINFO_LEVEL_NORMAL
- && debug_info_level != DINFO_LEVEL_VERBOSE)
+ else if (debug_info_level == DINFO_LEVEL_NORMAL
+ || debug_info_level == DINFO_LEVEL_VERBOSE
+ /* Removing declarations before inlining is going to affect
+ DECL_UID that in turn is going to affect hashtables and
+ code generation. */
+ || !cfun->after_inlining)
+ unused = false;
+
+ else
{
*t = TREE_CHAIN (*t);
next = t;
@@ -523,7 +530,10 @@ remove_unused_scope_block_p (tree scope)
nsubblocks ++;
}
else
- *t = BLOCK_CHAIN (*t);
+ {
+ gcc_assert (!BLOCK_VARS (*t));
+ *t = BLOCK_CHAIN (*t);
+ }
}
else
{