From 4547eca67f102b9a7705a3e6259f48d993f79b7a Mon Sep 17 00:00:00 2001 From: jakub Date: Sun, 2 Jan 2011 17:07:15 +0000 Subject: PR rtl-optimization/47028 * cfgexpand.c (gimple_expand_cfg): Insert entry edge insertions after parm_birth_insn instead of at the beginning of first bb. * gcc.dg/pr47028.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168401 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cfgexpand.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'gcc/cfgexpand.c') diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index a3940d01775..13c63be12ef 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -4085,7 +4085,19 @@ gimple_expand_cfg (void) for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); ) { if (e->insns.r) - commit_one_edge_insertion (e); + { + /* Avoid putting insns before parm_birth_insn. */ + if (e->src == ENTRY_BLOCK_PTR + && single_succ_p (ENTRY_BLOCK_PTR) + && parm_birth_insn) + { + rtx insns = e->insns.r; + e->insns.r = NULL_RTX; + emit_insn_after_noloc (insns, parm_birth_insn, e->dest); + } + else + commit_one_edge_insertion (e); + } else ei_next (&ei); } -- cgit v1.2.1