Commit e40191f1 by Tom de Vries Committed by Tom de Vries

Fix line number data for PIC register setup code.

2013-10-27  Tom de Vries  <tom@codesourcery.com>

	* cfgexpand.c (gimple_expand_cfg): Remove test for parm_birth_insn.
	Don't commit insertions after NOTE_INSN_FUNCTION_BEG.

	* gcc.target/arm/require-pic-register-loc.c: New test.

From-SVN: r204112
parent 3c7ac4cb
2013-10-27 Tom de Vries <tom@codesourcery.com>
* cfgexpand.c (gimple_expand_cfg): Remove test for parm_birth_insn.
Don't commit insertions after NOTE_INSN_FUNCTION_BEG.
2013-10-27 Oleg Endo <olegendo@gcc.gnu.org> 2013-10-27 Oleg Endo <olegendo@gcc.gnu.org>
* config/sh/sh.c (MSW, LSW): Move and rename macros to... * config/sh/sh.c (MSW, LSW): Move and rename macros to...
...@@ -4789,14 +4789,18 @@ gimple_expand_cfg (void) ...@@ -4789,14 +4789,18 @@ gimple_expand_cfg (void)
if (e->insns.r) if (e->insns.r)
{ {
rebuild_jump_labels_chain (e->insns.r); rebuild_jump_labels_chain (e->insns.r);
/* Avoid putting insns before parm_birth_insn. */ /* Put insns after parm birth, but before
NOTE_INSNS_FUNCTION_BEG. */
if (e->src == ENTRY_BLOCK_PTR if (e->src == ENTRY_BLOCK_PTR
&& single_succ_p (ENTRY_BLOCK_PTR) && single_succ_p (ENTRY_BLOCK_PTR))
&& parm_birth_insn)
{ {
rtx insns = e->insns.r; rtx insns = e->insns.r;
e->insns.r = NULL_RTX; e->insns.r = NULL_RTX;
emit_insn_after_noloc (insns, parm_birth_insn, e->dest); if (NOTE_P (parm_birth_insn)
&& NOTE_KIND (parm_birth_insn) == NOTE_INSN_FUNCTION_BEG)
emit_insn_before_noloc (insns, parm_birth_insn, e->dest);
else
emit_insn_after_noloc (insns, parm_birth_insn, e->dest);
} }
else else
commit_one_edge_insertion (e); commit_one_edge_insertion (e);
......
2013-10-27 Tom de Vries <tom@codesourcery.com>
* gcc.target/arm/require-pic-register-loc.c: New test.
2013-10-27 Uros Bizjak <ubizjak@gmail.com> 2013-10-27 Uros Bizjak <ubizjak@gmail.com>
PR target/58679 PR target/58679
......
/* { dg-do compile } */
/* { dg-options "-g -fPIC" } */
void *v;
void a (void *x) { }
void b (void) { }
/* line 7. */
int /* line 8. */
main (int argc) /* line 9. */
{ /* line 10. */
if (argc == 12345) /* line 11. */
{
a (v);
return 1;
}
b ();
return 0;
}
/* { dg-final { scan-assembler-not "\.loc 1 7 0" } } */
/* { dg-final { scan-assembler-not "\.loc 1 8 0" } } */
/* { dg-final { scan-assembler-not "\.loc 1 9 0" } } */
/* The loc at the start of the prologue. */
/* { dg-final { scan-assembler-times "\.loc 1 10 0" 1 } } */
/* The loc at the end of the prologue, with the first user line. */
/* { dg-final { scan-assembler-times "\.loc 1 11 0" 1 } } */
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