On Wed, May 4, 2016 at 1:30 AM, Alan Modra <amo...@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