Message ID | 20160504053050.GW18915@bubble.grove.modra.org |
---|---|
State | New |
Headers | show |
On Wed, May 4, 2016 at 1:30 AM, Alan Modra <amodra@gmail.com> wrote: > Leaving this as r30 results in pic_offset_table_rtx of (reg 30) > for -m64, which is completely bogus. Various rtl analysis predicate > functions treat pic_offset_table_rtx specially.. > > Bootsrapped etc. OK to apply? > > * config/rs6000/rs6000.h (PIC_OFFSET_TABLE_REGNUM): Correct. > > diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h > index 230ca43..9647106 100644 > --- a/gcc/config/rs6000/rs6000.h > +++ b/gcc/config/rs6000/rs6000.h > @@ -2050,7 +2050,10 @@ do { \ > to allocate such a register (if necessary). */ > > #define RS6000_PIC_OFFSET_TABLE_REGNUM 30 > -#define PIC_OFFSET_TABLE_REGNUM (flag_pic ? RS6000_PIC_OFFSET_TABLE_REGNUM : INVALID_REGNUM) > +#define PIC_OFFSET_TABLE_REGNUM \ > + (TARGET_TOC ? TOC_REGISTER \ > + : flag_pic ? RS6000_PIC_OFFSET_TABLE_REGNUM \ > + : INVALID_REGNUM) > > #define TOC_REGISTER (TARGET_MINIMAL_TOC ? RS6000_PIC_OFFSET_TABLE_REGNUM : 2) Okay. Thanks, David
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 230ca43..9647106 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -2050,7 +2050,10 @@ do { \ to allocate such a register (if necessary). */ #define RS6000_PIC_OFFSET_TABLE_REGNUM 30 -#define PIC_OFFSET_TABLE_REGNUM (flag_pic ? RS6000_PIC_OFFSET_TABLE_REGNUM : INVALID_REGNUM) +#define PIC_OFFSET_TABLE_REGNUM \ + (TARGET_TOC ? TOC_REGISTER \ + : flag_pic ? RS6000_PIC_OFFSET_TABLE_REGNUM \ + : INVALID_REGNUM) #define TOC_REGISTER (TARGET_MINIMAL_TOC ? RS6000_PIC_OFFSET_TABLE_REGNUM : 2)