aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@act-europe.fr>2004-02-27 09:11:34 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-02-27 08:11:34 +0000
commit288dc1eae2f0349f257da93a8cba7fae0404ff05 (patch)
tree89b9c323fc395b30c52bd4ad180647a25da37dd4
parent7a0a47c77ffab06d18d4a0fc54905060eaeecd05 (diff)
downloadgcc-288dc1eae2f0349f257da93a8cba7fae0404ff05.zip
gcc-288dc1eae2f0349f257da93a8cba7fae0404ff05.tar.gz
gcc-288dc1eae2f0349f257da93a8cba7fae0404ff05.tar.bz2
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) <MAX_EXPR>: Consistently use the 'unsignedp' predicate to specify the signedness. Co-Authored-By: Roger Sayle <roger@eyesopen.com> From-SVN: r78558
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/expr.c14
-rw-r--r--gcc/fold-const.c8
3 files changed, 17 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a0677fe..d0d6185 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-02-27 Eric Botcazou <ebotcazou@act-europe.fr>
+ Roger Sayle <roger@eyesopen.com>
+
+ * 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) <MAX_EXPR>: Consistently use the
+ 'unsignedp' predicate to specify the signedness.
+
2004-02-27 Kazu Hirata <kazu@cs.umass.edu>
* c-decl.c, c-ppoutput.c, combine.c, cppfiles.c, dwarf2out.c,
diff --git a/gcc/expr.c b/gcc/expr.c
index bf14606..205dc78 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 956478a..9178a344 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,