]> git.ipfire.org Git - thirdparty/gcc.git/commit
backport: re PR target/51784 (PIC register not correctly preserved in nested funcs...
authorIain Sandoe <iain@codesourcery.com>
Sun, 1 Sep 2013 15:39:28 +0000 (15:39 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Sun, 1 Sep 2013 15:39:28 +0000 (15:39 +0000)
commit73168547c7777ca50db232abd1c51219bb6a8c2a
tree790bf3c9d52dc7f6738d94a26e8d59886e32026d
parent4709b71fdb4dc205ebd6736d9f3f8d56f26f0833
backport: re PR target/51784 (PIC register not correctly preserved in nested funcs / with non-local goto)

gcc:
Backport from mainline:
2013-07-22  Uros Bizjak  <ubizjak@gmail.com>

* config/i386/i386.md (nonlocal_goto_receiver): Delete insn if
it is not needed after split.

2013-07-20  Iain Sandoe  <iain@codesourcery.com>

PR target/51784
* config/i386/i386.c (output_set_got) [TARGET_MACHO]: Adjust to emit a
second label for nonlocal goto receivers. Don't output pic base labels
unless we're producing PIC; mark that action unreachable().
(ix86_save_reg): If the function contains a nonlocal label, save the
PIC base reg.
* config/darwin-protos.h (machopic_should_output_picbase_label): New.
* gcc/config/darwin.c (emitted_pic_label_num): New GTY.
(update_pic_label_number_if_needed): New.
(machopic_output_function_base_name): Adjust for nonlocal receiver
case.
(machopic_should_output_picbase_label): New.
* config/i386/i386.md (enum unspecv): UNSPECV_NLGR: New.
(nonlocal_goto_receiver): New insn and split.

From-SVN: r202147
gcc/ChangeLog
gcc/config/darwin-protos.h
gcc/config/darwin.c
gcc/config/i386/i386.c
gcc/config/i386/i386.md