aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEvgeny Stupachenko <evstupac@gmail.com>2014-11-07 20:42:36 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2014-11-07 20:42:36 +0000
commit64df297158621407b9a2204b661584c9a4d526e6 (patch)
treec445d7d3717a04379e5b5243a6f59f3abed95a49 /gcc
parent82910dd63a69913d81e51d459821a77f4de2e251 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md33
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