OSDN Git Service

* optabs.c (emit_cmp_and_jump_insns): Handle the case where both
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 May 1999 12:05:24 +0000 (12:05 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 May 1999 12:05:24 +0000 (12:05 +0000)
operands to the comparison are constants.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26860 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/optabs.c

index 50be905..f62484d 100644 (file)
@@ -1,3 +1,8 @@
+Mon May 10 12:59:20 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * optabs.c (emit_cmp_and_jump_insns): Handle the case where both
+       operands to the comparison are constants.
+
 Mon May 10 07:28:10 1999  Bruce Korb <autogen@autogen.freeservers.com>
 
        * fixinc/inclhack.def(arm_norcroft_hint): check before fixing
index 541471e..75f224c 100644 (file)
@@ -2976,6 +2976,15 @@ emit_cmp_and_jump_insns (x, y, comparison, size, mode, unsignedp, align, label)
       op0 = x;
       op1 = y;
     }
+
+#ifdef HAVE_cc0
+  /* If OP0 is still a constant, then both X and Y must be constants.  Force
+     X into a register to avoid aborting in emit_cmp_insn due to non-canonical
+     RTL.  */
+  if (CONSTANT_P (op0))
+    op0 = force_reg (mode, op0);
+#endif
+
   emit_cmp_insn (op0, op1, comparison, size, mode, unsignedp, align);
 
   if (unsignedp)