diff options
author | Evgeny Stupachenko <evstupac@gmail.com> | 2014-11-07 20:42:36 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2014-11-07 20:42:36 +0000 |
commit | 64df297158621407b9a2204b661584c9a4d526e6 (patch) | |
tree | c445d7d3717a04379e5b5243a6f59f3abed95a49 /gcc | |
parent | 82910dd63a69913d81e51d459821a77f4de2e251 (diff) | |
download | gcc-64df297158621407b9a2204b661584c9a4d526e6.zip gcc-64df297158621407b9a2204b661584c9a4d526e6.tar.gz gcc-64df297158621407b9a2204b661584c9a4d526e6.tar.bz2 |
re PR target/63534 (Bootstrap failure on x86_64/i686-linux)
PR target/63534
gcc/
* config/i386/i386.md (builtin_setjmp_receiver): Use
pic_offset_table_rtx for PIC register.
(nonlocal_goto_receiver): Delete.
From-SVN: r217237
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 33 |
2 files changed, 8 insertions, 32 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a7a43d..eb5d793 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-11-07 Evgeny Stupachenko <evstupac@gmail.com> + + PR target/63534 + * config/i386/i386.md (builtin_setjmp_receiver): Use + pic_offset_table_rtx for PIC register. + (nonlocal_goto_receiver): Delete. + 2014-11-07 Daniel Hellstrom <daniel@gaisler.com> * config.gcc (sparc-*-rtems*): Clean away unused t-elf. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7e26c69..f2b8788 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -17005,10 +17005,9 @@ if (TARGET_MACHO) { rtx xops[3]; - rtx picreg = gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM); rtx_code_label *label_rtx = gen_label_rtx (); emit_insn (gen_set_got_labelled (pic_offset_table_rtx, label_rtx)); - xops[0] = xops[1] = picreg; + xops[0] = xops[1] = pic_offset_table_rtx; xops[2] = machopic_gen_offset (gen_rtx_LABEL_REF (SImode, label_rtx)); ix86_expand_binary_operator (MINUS, SImode, xops); } @@ -17018,36 +17017,6 @@ DONE; }) -(define_insn_and_split "nonlocal_goto_receiver" - [(unspec_volatile [(const_int 0)] UNSPECV_NLGR)] - "TARGET_MACHO && !TARGET_64BIT && flag_pic" - "#" - "&& reload_completed" - [(const_int 0)] -{ - if (crtl->uses_pic_offset_table) - { - rtx xops[3]; - rtx label_rtx = gen_label_rtx (); - rtx tmp; - - /* Get a new pic base. */ - emit_insn (gen_set_got_labelled (pic_offset_table_rtx, label_rtx)); - /* Correct this with the offset from the new to the old. */ - xops[0] = xops[1] = pic_offset_table_rtx; - label_rtx = gen_rtx_LABEL_REF (SImode, label_rtx); - tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, label_rtx), - UNSPEC_MACHOPIC_OFFSET); - xops[2] = gen_rtx_CONST (Pmode, tmp); - ix86_expand_binary_operator (MINUS, SImode, xops); - } - else - /* No pic reg restore needed. */ - emit_note (NOTE_INSN_DELETED); - - DONE; -}) - ;; Avoid redundant prefixes by splitting HImode arithmetic to SImode. ;; Do not split instructions with mask registers. (define_split |