From: Richard Kenner Date: Sat, 15 May 1993 17:23:58 +0000 (-0400) Subject: (movqi, movhi, movsi): Make sure that address returned from X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b45863ecee4523fcb7822702eba1bed616e45563;p=gcc.git (movqi, movhi, movsi): Make sure that address returned from force_const_mem is valid. From-SVN: r4475 --- diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 91bcbab9ff6..a9272ba715c 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -2090,7 +2090,13 @@ operands[1] = force_reg (SImode, operands[1]); if (CONSTANT_P (operands[1]) && GET_CODE (operands[1]) != CONST_INT) - operands[1] = force_const_mem (SImode, operands[1]); + { + operands[1] = force_const_mem (SImode, operands[1]); + if (! memory_address_p (SImode, XEXP (operands[1], 0)) + && ! reload_in_progress) + operands[1] = change_address (operands[1], SImode, + XEXP (operands[1], 0)); + } if (GET_CODE (operands[1]) == CONST_INT && (unsigned) (INTVAL (operands[1]) + 0x8000) >= 0x10000 @@ -2162,7 +2168,13 @@ operands[1] = force_reg (HImode, operands[1]); if (CONSTANT_P (operands[1]) && GET_CODE (operands[1]) != CONST_INT) - operands[1] = force_const_mem (HImode, operands[1]); + { + operands[1] = force_const_mem (HImode, operands[1]); + if (! memory_address_p (HImode, XEXP (operands[1], 0)) + && ! reload_in_progress) + operands[1] = change_address (operands[1], HImode, + XEXP (operands[1], 0)); + } }") (define_insn "" @@ -2190,7 +2202,13 @@ operands[1] = force_reg (QImode, operands[1]); if (CONSTANT_P (operands[1]) && GET_CODE (operands[1]) != CONST_INT) - operands[1] = force_const_mem (QImode, operands[1]); + { + operands[1] = force_const_mem (QImode, operands[1]); + if (! memory_address_p (QImode, XEXP (operands[1], 0)) + && ! reload_in_progress) + operands[1] = change_address (operands[1], QImode, + XEXP (operands[1], 0)); + } }") (define_insn ""