Commit be611c9c by Segher Boessenkool Committed by Iain Sandoe

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
parent aa3a2eca
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> 2018-12-12 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/rs6000-protos.h (rs6000_call_darwin): New. * config/rs6000/rs6000-protos.h (rs6000_call_darwin): New.
...@@ -23969,7 +23969,7 @@ save_reg_p (int reg) ...@@ -23969,7 +23969,7 @@ save_reg_p (int reg)
return true; return true;
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN)
&& flag_pic) && flag_pic && crtl->uses_pic_offset_table)
return true; return true;
} }
...@@ -23989,13 +23989,6 @@ first_reg_to_save (void) ...@@ -23989,13 +23989,6 @@ first_reg_to_save (void)
if (save_reg_p (first_reg)) if (save_reg_p (first_reg))
break; 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; return first_reg;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment