diff options
author | Alan Modra <amodra@gmail.com> | 2016-05-04 22:53:58 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2016-05-04 22:53:58 +0930 |
commit | 24f77f59d12ad05d8b0c1dc1faae4f698d12da3f (patch) | |
tree | cbf264f08b880370e3148af0ec4e2e4c2df64e6b | |
parent | 967245d1f63076dde846f0201a0fba05c334a3e6 (diff) | |
download | gcc-24f77f59d12ad05d8b0c1dc1faae4f698d12da3f.zip gcc-24f77f59d12ad05d8b0c1dc1faae4f698d12da3f.tar.gz gcc-24f77f59d12ad05d8b0c1dc1faae4f698d12da3f.tar.bz2 |
[RS6000] Correct PIC_OFFSET_TABLE_REGNUM
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..
* config/rs6000/rs6000.h (PIC_OFFSET_TABLE_REGNUM): Correct.
From-SVN: r235876
-rw-r--r-- | gcc/ChangeLog | 1 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 5 |
2 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a097aee..00440fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,6 @@ 2016-05-04 Alan Modra <amodra@gmail.com> + * config/rs6000/rs6000.h (PIC_OFFSET_TABLE_REGNUM): Correct. * config/rs6000/sysv4.h (TARGET_TOC): Simplify. * config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op): Align .toc. diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 12fa727..c89236a 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -2058,7 +2058,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) |