OSDN Git Service

* expr.c (compare_from_rtx): Call simplify_relational_operation
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 15 Jun 2002 20:21:22 +0000 (20:21 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 15 Jun 2002 20:21:22 +0000 (20:21 +0000)
on all comparisons, not just those between integer constants,
with the correct (possibly unsigned) comparison code.
(do_compare_rtx_and_jump): Likewise.

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

gcc/ChangeLog
gcc/expr.c

index b4eb108..6e23210 100644 (file)
@@ -1,3 +1,10 @@
+2002-06-15  Roger Sayle  <roger@eyesopen.com>
+
+       * expr.c (compare_from_rtx): Call simplify_relational_operation
+       on all comparisons, not just those between integer constants,
+       with the correct (possibly unsigned) comparison code.
+       (do_compare_rtx_and_jump): Likewise.
+
 2002-06-15  John David Anglin  <dave@hiauly1.hia.nrc.ca>
 
        * Makefile.in (tm_defines): New configuration variable.
index dc36708..bba785a 100644 (file)
@@ -10045,6 +10045,7 @@ compare_from_rtx (op0, op1, code, unsignedp, mode, size)
      enum machine_mode mode;
      rtx size;
 {
+  enum rtx_code ucode;
   rtx tem;
 
   /* If one operand is constant, make it the second one.  Only do this
@@ -10066,8 +10067,8 @@ compare_from_rtx (op0, op1, code, unsignedp, mode, size)
 
   do_pending_stack_adjust ();
 
-  if (GET_CODE (op0) == CONST_INT && GET_CODE (op1) == CONST_INT
-      && (tem = simplify_relational_operation (code, mode, op0, op1)) != 0)
+  ucode = unsignedp ? unsigned_condition (code) : code;
+  if ((tem = simplify_relational_operation (ucode, mode, op0, op1)) != 0)
     return tem;
 
 #if 0
@@ -10117,6 +10118,7 @@ do_compare_rtx_and_jump (op0, op1, code, unsignedp, mode, size,
      rtx size;
      rtx if_false_label, if_true_label;
 {
+  enum rtx_code ucode;
   rtx tem;
   int dummy_true_label = 0;
 
@@ -10148,8 +10150,8 @@ do_compare_rtx_and_jump (op0, op1, code, unsignedp, mode, size,
 
   do_pending_stack_adjust ();
 
-  if (GET_CODE (op0) == CONST_INT && GET_CODE (op1) == CONST_INT
-      && (tem = simplify_relational_operation (code, mode, op0, op1)) != 0)
+  ucode = unsignedp ? unsigned_condition (code) : code;
+  if ((tem = simplify_relational_operation (ucode, mode, op0, op1)) != 0)
     {
       if (tem == const_true_rtx)
        {