]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3] valid.
authorRichard Earnshaw <rearnsha@arm.com>
Thu, 27 Nov 1997 16:35:21 +0000 (16:35 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 27 Nov 1997 16:35:21 +0000 (09:35 -0700)
        * arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3]
        valid.

From-SVN: r16797

gcc/ChangeLog
gcc/config/arm/arm.md

index f9d6aaf21382ef494690b861f340bd424dec901f..74262c8f18835c4f4bf616f783e28ac0c8f837fd 100644 (file)
@@ -1,3 +1,8 @@
+Thu Nov 27 09:32:39 1997  Richard Earnshaw  (rearnsha@arm.com)
+
+       * arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3] 
+       valid.
+
 Wed Nov 26 13:04:46 1997  Michael Meissner  <meissner@cygnus.com>
 
        * rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
index afc2794ea1e30a2c74b8d20a9ad8f361434fd68a..f2987403a2137e436453e02a5e8f6f810e035114 100644 (file)
   "
 {
   enum rtx_code code = GET_CODE (operands[1]);
-  rtx ccreg = gen_compare_reg (code, arm_compare_op0, arm_compare_op1,
-                              arm_compare_fp);
+  rtx ccreg;
+
+  /* When compiling for SOFT_FLOAT, ensure both arms are in registers.  */
+  if (! TARGET_HARD_FLOAT)
+    operands[3] = force_reg (SFmode, operands[3]);
+
+  ccreg = gen_compare_reg (code, arm_compare_op0, arm_compare_op1,
+                          arm_compare_fp);
 
   operands[1] = gen_rtx (code, VOIDmode, ccreg, const0_rtx);
 }")