From 64df297158621407b9a2204b661584c9a4d526e6 Mon Sep 17 00:00:00 2001 From: Evgeny Stupachenko Date: Fri, 7 Nov 2014 20:42:36 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.md | 33 +-------------------------------- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a7a43d8e2e..eb5d793f1be 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-11-07 Evgeny Stupachenko + + 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 * config.gcc (sparc-*-rtems*): Clean away unused t-elf. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7e26c693d67..f2b878817cf 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 -- 2.30.2