From: Eric Botcazou Date: Fri, 27 Feb 2004 08:11:34 +0000 (+0100) Subject: fold-const.c (fold): Revert 2004-02-25 change. X-Git-Tag: releases/gcc-4.0.0~9800 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=288dc1eae2f0349f257da93a8cba7fae0404ff05;p=thirdparty%2Fgcc.git fold-const.c (fold): Revert 2004-02-25 change. * fold-const.c (fold): Revert 2004-02-25 change. Use the original operands to build a tree with swapped operands. * expr.c (expand_expr_real) : Consistently use the 'unsignedp' predicate to specify the signedness. Co-Authored-By: Roger Sayle From-SVN: r78558 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0677fe48743..d0d6185725b0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-02-27 Eric Botcazou + Roger Sayle + + * fold-const.c (fold): Revert 2004-02-25 change. Use the original + operands to build a tree with swapped operands. + * expr.c (expand_expr_real) : Consistently use the + 'unsignedp' predicate to specify the signedness. + 2004-02-27 Kazu Hirata * c-decl.c, c-ppoutput.c, combine.c, cppfiles.c, dwarf2out.c, diff --git a/gcc/expr.c b/gcc/expr.c index bf1460649f36..205dc78f9d8e 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -8034,7 +8034,7 @@ expand_expr_real (tree exp, rtx target, enum machine_mode tmode, /* First try to do it with a special MIN or MAX instruction. If that does not win, use a conditional jump to select the proper value. */ - this_optab = (TREE_UNSIGNED (type) + this_optab = (unsignedp ? (code == MIN_EXPR ? umin_optab : umax_optab) : (code == MIN_EXPR ? smin_optab : smax_optab)); @@ -8068,18 +8068,16 @@ expand_expr_real (tree exp, rtx target, enum machine_mode tmode, && ! can_compare_p (GE, mode, ccp_jump)) { if (code == MAX_EXPR) - do_jump_by_parts_greater_rtx (mode, TREE_UNSIGNED (type), - target, op1, NULL_RTX, op0); + do_jump_by_parts_greater_rtx (mode, unsignedp, target, op1, + NULL_RTX, op0); else - do_jump_by_parts_greater_rtx (mode, TREE_UNSIGNED (type), - op1, target, NULL_RTX, op0); + do_jump_by_parts_greater_rtx (mode, unsignedp, op1, target, + NULL_RTX, op0); } else { - int unsignedp = TREE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 1))); do_compare_rtx_and_jump (target, op1, code == MAX_EXPR ? GE : LE, - unsignedp, mode, NULL_RTX, NULL_RTX, - op0); + unsignedp, mode, NULL_RTX, NULL_RTX, op0); } emit_move_insn (target, op1); emit_label (op0); diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 956478af001f..9178a3441782 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -5423,10 +5423,7 @@ fold (tree expr) if (op == 0) continue; /* Valid for CALL_EXPR, at least. */ - if (kind == '<' - || code == MAX_EXPR - || code == MIN_EXPR - || code == RSHIFT_EXPR) + if (kind == '<' || code == RSHIFT_EXPR) { /* Signedness matters here. Perhaps we can refine this later. */ @@ -5459,7 +5456,8 @@ fold (tree expr) to ARG1 to reduce the number of tests below. */ if (commutative_tree_code (code) && tree_swap_operands_p (arg0, arg1, true)) - return fold (build (code, type, arg1, arg0)); + return fold (build (code, type, TREE_OPERAND (t, 1), + TREE_OPERAND (t, 0))); /* Now WINS is set as described above, ARG0 is the first operand of EXPR,