re PR target/63534 (Bootstrap failure on x86_64/i686-linux)
authorEvgeny Stupachenko <evstupac@gmail.com>
Fri, 7 Nov 2014 20:42:36 +0000 (20:42 +0000)
committerKirill Yukhin <kyukhin@gcc.gnu.org>
Fri, 7 Nov 2014 20:42:36 +0000 (20:42 +0000)
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
gcc/config/i386/i386.md

index 0a7a43d8e2eedaa3e474a3fb547b722f2888a411..eb5d793f1bebc9a628b07d95e253d8e3affe1b1e 100644 (file)
@@ -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.
index 7e26c693d678f204be5e349af8b44d6aff88d607..f2b878817cf65d318f06e97d248ae405e09049da 100644 (file)
   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);
     }
   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