Message ID | 0d46ed18a8f5c6ac81373004ff4535283b3b191d.1561992761.git.segher@kernel.crashing.org |
---|---|
State | New |
Headers | show |
Series | rs6000: Improve indexed addressing | expand |
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5e80673..f59f3a9 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -32100,7 +32100,16 @@ rs6000_force_indexed_or_indirect_mem (rtx x) addr = reg; } - x = replace_equiv_address (x, force_reg (Pmode, addr)); + if (GET_CODE (addr) == PLUS) + { + rtx op0 = XEXP (addr, 0); + rtx op1 = XEXP (addr, 1); + op0 = force_reg (Pmode, op0); + op1 = force_reg (Pmode, op1); + x = replace_equiv_address (x, gen_rtx_PLUS (Pmode, op0, op1)); + } + else + x = replace_equiv_address (x, force_reg (Pmode, addr)); } return x;