re PR target/83368 (alloca after setjmp breaks PIC base reg)
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 12 Jan 2018 11:29:30 +0000 (11:29 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 12 Jan 2018 11:29:30 +0000 (11:29 +0000)
commit46336a0eab790e4f94dd7e7ecf9339a884c44746
tree51b16fb66a4da8d279c2e67e868a44edb627e20e
parent7dbf870757aa5a35d52a2e1a3c40ce488c898d14
re PR target/83368 (alloca after setjmp breaks PIC base reg)

PR target/83368
* config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
in PIC mode except for TARGET_VXWORKS_RTP.
* config/sparc/sparc.c: Include cfgrtl.h.
(TARGET_INIT_PIC_REG): Define.
(TARGET_USE_PSEUDO_PIC_REG): Likewise.
(sparc_pic_register_p): New predicate.
(sparc_legitimate_address_p): Use it.
(sparc_legitimize_pic_address): Likewise.
(sparc_delegitimize_address): Likewise.
(sparc_mode_dependent_address_p): Likewise.
(gen_load_pcrel_sym): Remove 4th parameter.
(load_got_register): Adjust call to above.  Remove obsolete stuff.
(sparc_expand_prologue): Do not call load_got_register here.
(sparc_flat_expand_prologue): Likewise.
(sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
(sparc_use_pseudo_pic_reg): New function.
(sparc_init_pic_reg): Likewise.
* config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
(builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.

From-SVN: r256575
gcc/ChangeLog
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.h
gcc/config/sparc/sparc.md
gcc/testsuite/gcc.target/sparc/setjmp-1.c [new file with mode: 0644]