[PATCH, committed] rs6000: Fix for PR63165

Segher Boessenkool segher@kernel.crashing.org
Thu Sep 4 22:54:00 GMT 2014


My extend* pattern patches exposed a problem elsewhere.  I don't build
java so I didn't see it.  This fixes it.  Also handles the zero-extend
case, that had the same problem.  Pre-approved by David, committed.


Segher


2014-09-04  Segher Boessenkool  <segher@kernel.crashing.org>

	PR target/63165
	* config/rs6000/rs6000.md (floatsi<mode>2_lfiwax_mem): Use
	indexed_or_indirect_operand instead of memory_operand.
	(floatsi<mode>2_lfiwzx_mem): Ditto.

---
 gcc/config/rs6000/rs6000.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 9c0002d..0934467 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5514,7 +5514,7 @@ (define_insn_and_split "floatsi<mode>2_lfiwax_mem"
   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<rreg2>")
 	(float:SFDF
 	 (sign_extend:DI
-	  (match_operand:SI 1 "memory_operand" "Z,Z"))))
+	  (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
    (clobber (match_scratch:DI 2 "=0,d"))]
   "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT && TARGET_LFIWAX
    && <SI_CONVERT_FP>"
@@ -5589,7 +5589,7 @@ (define_insn_and_split "floatunssi<mode>2_lfiwzx_mem"
   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<rreg2>")
 	(unsigned_float:SFDF
 	 (zero_extend:DI
-	  (match_operand:SI 1 "memory_operand" "Z,Z"))))
+	  (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
    (clobber (match_scratch:DI 2 "=0,d"))]
   "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT && TARGET_LFIWZX
    && <SI_CONVERT_FP>"
-- 
1.8.1.4



More information about the Gcc-patches mailing list