[RS6000] Correct PIC_OFFSET_TABLE_REGNUM
David Edelsohn
dje.gcc@gmail.com
Wed May 4 12:58:00 GMT 2016
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
More information about the Gcc-patches
mailing list