From 129e0ee875fbde69fd5bef74a99247b6dfd7b36c Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Sat, 15 Jun 2002 20:21:22 +0000 Subject: [PATCH] expr.c (compare_from_rtx): Call simplify_relational_operation on all comparisons... * 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. From-SVN: r54657 --- gcc/ChangeLog | 7 +++++++ gcc/expr.c | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b4eb108b6c9..6e23210797b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2002-06-15 Roger Sayle + + * 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 * Makefile.in (tm_defines): New configuration variable. diff --git a/gcc/expr.c b/gcc/expr.c index dc36708952d..bba785ab33b 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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) {