From b45863ecee4523fcb7822702eba1bed616e45563 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sat, 15 May 1993 13:23:58 -0400 Subject: [PATCH] (movqi, movhi, movsi): Make sure that address returned from force_const_mem is valid. From-SVN: r4475 --- gcc/config/rs6000/rs6000.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 91bcbab..a9272ba 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 "" -- 2.7.4