diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2018-12-12 09:53:49 +0100 |
---|---|---|
committer | Iain Sandoe <iains@gcc.gnu.org> | 2018-12-12 08:53:49 +0000 |
commit | be611c9c5a544b08cfd3ff5d45b04a127d4d055f (patch) | |
tree | 429f0291958333f58e2c6ef01fb36188c136775a | |
parent | aa3a2eca42d9bcebdaa2441e050df8b5bc24e4fa (diff) | |
download | gcc-be611c9c5a544b08cfd3ff5d45b04a127d4d055f.zip gcc-be611c9c5a544b08cfd3ff5d45b04a127d4d055f.tar.gz gcc-be611c9c5a544b08cfd3ff5d45b04a127d4d055f.tar.bz2 |
rs6000 - Fix PR target/88343
The PR is about unnecessary saves of the pic base register, it shows on m32 Linux and m32/m64 Darwin.
The fix is to check that we are in a pic mode and that the picbase has actually been used.
As a bonus, some #ifdef’d TARGET_MACHO code is no longer required.
2018-12-12 Segher Boessenkool <segher@kernel.crashing.org>
Iain Sandoe <iain@sandoe.co.uk>
PR target/88343
* config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg
unless it has been used.
(first_reg_to_save): Remove dead code.
Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk>
From-SVN: r267049
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 9 |
2 files changed, 9 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c561bce..2a6916b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2018-12-12 Segher Boessenkool <segher@kernel.crashing.org> + Iain Sandoe <iain@sandoe.co.uk> + + PR target/88343 + * config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg + unless it has been used. + (first_reg_to_save): Remove dead code. + 2018-12-12 Iain Sandoe <iain@sandoe.co.uk> * config/rs6000/rs6000-protos.h (rs6000_call_darwin): New. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5beb8df..a8e50cf 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -23969,7 +23969,7 @@ save_reg_p (int reg) return true; if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) - && flag_pic) + && flag_pic && crtl->uses_pic_offset_table) return true; } @@ -23989,13 +23989,6 @@ first_reg_to_save (void) if (save_reg_p (first_reg)) break; -#if TARGET_MACHO - if (flag_pic - && crtl->uses_pic_offset_table - && first_reg > RS6000_PIC_OFFSET_TABLE_REGNUM) - return RS6000_PIC_OFFSET_TABLE_REGNUM; -#endif - return first_reg; } |