diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2007-11-26 06:24:54 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2007-11-26 06:24:54 +0000 |
commit | 3c8da8a5e064ffaea9f97a118844f0ace157ab81 (patch) | |
tree | 9f3970e56f7699f3fe29ddd7cc3e98c94ed238ca /gcc | |
parent | 573b3837c6c60c904934b16dea1c9679005b68f6 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree-inline.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-live.c | 16 |
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 { |