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
This commit is contained in:
parent
3c7ac4cbe7
commit
e40191f1e0
4 changed files with 46 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
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>
|
||||
|
||||
* config/sh/sh.c (MSW, LSW): Move and rename macros to...
|
||||
|
|
|
@ -4789,14 +4789,18 @@ gimple_expand_cfg (void)
|
|||
if (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
|
||||
&& single_succ_p (ENTRY_BLOCK_PTR)
|
||||
&& parm_birth_insn)
|
||||
&& single_succ_p (ENTRY_BLOCK_PTR))
|
||||
{
|
||||
rtx insns = e->insns.r;
|
||||
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
|
||||
commit_one_edge_insertion (e);
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
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>
|
||||
|
||||
PR target/58679
|
||||
|
|
29
testsuite/gcc.target/arm/require-pic-register-loc.c
Normal file
29
testsuite/gcc.target/arm/require-pic-register-loc.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
/* { 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 } } */
|
Loading…
Add table
Reference in a new issue