rs6000: Fix allocate_stack in a corner case (PR91289)
authorSegher Boessenkool <segher@kernel.crashing.org>
Sat, 26 Oct 2019 16:38:59 +0000 (18:38 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Sat, 26 Oct 2019 16:38:59 +0000 (18:38 +0200)
commit26bd2dab50817184b73cea1034d7e60d55def70d
tree0285a6a3a25735d8c81fb0d31a0147d48a5d70d0
parent8bbf3dea78325c39d7750e815024eef960415592
rs6000: Fix allocate_stack in a corner case (PR91289)

When we have -fstack-limit-symbol with sysv we can end up with a non-
existing instruction (you cannot add an immediate to register 0).  Fix
this by using register 11 instead.  It might be used for something else
already though, so save and restore its value around this.  In
optimizing compiles these extra moves are usually removed again: the
restore by cprop_hardreg, and then the save by rtl_dce.

PR target/91289
* config/rs6000/rs6000-logue.c (rs6000_emit_allocate_stack): Don't add
an immediate to r0; use r11 instead.  Save and restore r11 to r0 around
this.

From-SVN: r277472
gcc/ChangeLog
gcc/config/rs6000/rs6000-logue.c