Commit 94645a02 by Jakub Jelinek Committed by Jakub Jelinek

tree-inline.c (expand_call_inline): Move VAR_DECLs with PARM_DECL origins from…

tree-inline.c (expand_call_inline): Move VAR_DECLs with PARM_DECL origins from remapped DECL_INITIAL's BLOCK_VARS...

	* tree-inline.c (expand_call_inline): Move VAR_DECLs with
	PARM_DECL origins from remapped DECL_INITIAL's BLOCK_VARS
	into id->block's BLOCK_VARS.

From-SVN: r192140
parent 878eef4a
2012-10-05 Jakub Jelinek <jakub@redhat.com> 2012-10-05 Jakub Jelinek <jakub@redhat.com>
* tree-inline.c (expand_call_inline): Move VAR_DECLs with
PARM_DECL origins from remapped DECL_INITIAL's BLOCK_VARS
into id->block's BLOCK_VARS.
PR debug/54519 PR debug/54519
* ipa-split.c (split_function): Add debug args and * ipa-split.c (split_function): Add debug args and
debug source and normal stmts for args_to_skip which are debug source and normal stmts for args_to_skip which are
......
...@@ -3952,7 +3952,29 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id) ...@@ -3952,7 +3952,29 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
initialize_inlined_parameters (id, stmt, fn, bb); initialize_inlined_parameters (id, stmt, fn, bb);
if (DECL_INITIAL (fn)) if (DECL_INITIAL (fn))
prepend_lexical_block (id->block, remap_blocks (DECL_INITIAL (fn), id)); {
tree *var;
prepend_lexical_block (id->block, remap_blocks (DECL_INITIAL (fn), id));
gcc_checking_assert (BLOCK_SUBBLOCKS (id->block)
&& (BLOCK_CHAIN (BLOCK_SUBBLOCKS (id->block))
== NULL_TREE));
/* Move vars for PARM_DECLs from DECL_INITIAL block to id->block,
otherwise for DWARF DW_TAG_formal_parameter will not be children of
DW_TAG_inlined_subroutine, but of a DW_TAG_lexical_block
under it. The parameters can be then evaluated in the debugger,
but don't show in backtraces. */
for (var = &BLOCK_VARS (BLOCK_SUBBLOCKS (id->block)); *var; )
if (TREE_CODE (DECL_ORIGIN (*var)) == PARM_DECL)
{
tree v = *var;
*var = TREE_CHAIN (v);
TREE_CHAIN (v) = BLOCK_VARS (id->block);
BLOCK_VARS (id->block) = v;
}
else
var = &TREE_CHAIN (*var);
}
/* Return statements in the function body will be replaced by jumps /* Return statements in the function body will be replaced by jumps
to the RET_LABEL. */ to the RET_LABEL. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment