PR jit/64722: fix corruption of %ebx on 32-bit i386 with libgccjit
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 23 Jan 2015 15:57:42 +0000 (15:57 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Fri, 23 Jan 2015 15:57:42 +0000 (15:57 +0000)
gcc/ChangeLog:
PR jit/64722
* emit-rtl.c (init_emit_regs): Set pic_offset_table_rtx to
NULL_RTX before testing PIC_OFFSET_TABLE_REGNUM, since the
latter may be affected by the former (e.g. on i686).

From-SVN: r220044

gcc/ChangeLog
gcc/emit-rtl.c

index 2b53eed19552fe7123c5c3ef0a211302172357a3..2a47ca2cecf451892c7cf48c43cb41d5cfbc7860 100644 (file)
@@ -1,3 +1,10 @@
+2015-01-23  David Malcolm  <dmalcolm@redhat.com>
+
+       PR jit/64722
+       * emit-rtl.c (init_emit_regs): Set pic_offset_table_rtx to
+       NULL_RTX before testing PIC_OFFSET_TABLE_REGNUM, since the
+       latter may be affected by the former (e.g. on i686).
+
 2015-01-23  Martin Liska  <mliska@suse.cz>
 
        * tree.h (tree_vec_elt_check): Workaround -Wstrict-overflow
index df85366c5d6d791d27da533ba07ead6ba5aaa898..483eacb2d6c56b23c1855428b650f15d29913e39 100644 (file)
@@ -5872,10 +5872,9 @@ init_emit_regs (void)
     = gen_raw_REG (Pmode, RETURN_ADDRESS_POINTER_REGNUM);
 #endif
 
+  pic_offset_table_rtx = NULL_RTX;
   if ((unsigned) PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM)
     pic_offset_table_rtx = gen_raw_REG (Pmode, PIC_OFFSET_TABLE_REGNUM);
-  else
-    pic_offset_table_rtx = NULL_RTX;
 
   for (i = 0; i < (int) MAX_MACHINE_MODE; i++)
     {