From: aoliva Date: Mon, 26 Nov 2007 06:24:54 +0000 (+0000) Subject: * tree-ssa-live.c (remove_unused_scope_block_p): Drop X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=7f481d3edaef50d86fac145324177ab124283196;hp=e0f40ead16de7b33aecee5fcdebca730298b5fdc * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130424 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46cfbac2d7c..7dac51909ad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2007-11-26 Alexandre Oliva , Jan Hubicka + + * 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 * unwind-dw2-fde.c: Fix comment typo. diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index cb161db8398..e7fba9129eb 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 f12de815a39..51d682c1c19 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 {