aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-09-20 05:37:58 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-09-20 05:37:58 -0700
commit899f1ed6980f803397d2bc6a1efc6a406be4a37a (patch)
tree7aca1efede51bf0b68888064d5cf85afaacedb30 /gcc
parent056a3b121c17e7614fadc394c00383b35460f142 (diff)
downloadgcc-899f1ed6980f803397d2bc6a1efc6a406be4a37a.zip
gcc-899f1ed6980f803397d2bc6a1efc6a406be4a37a.tar.gz
gcc-899f1ed6980f803397d2bc6a1efc6a406be4a37a.tar.bz2
fold-const.c (fold): Yet another COND_EXPR bug...
* fold-const.c (fold): Yet another COND_EXPR bug: when folding to an ABS expr, convert an unsigned input to signed. From-SVN: r22503
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/fold-const.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ffb1a6b..1f58e78 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Sun Sep 20 12:35:55 1998 Richard Henderson <rth@cygnus.com>
+
+ * fold-const.c (fold): Yet another COND_EXPR bug: when folding
+ to an ABS expr, convert an unsigned input to signed.
+
Sun Sep 20 12:14:45 1998 Jeffrey A Law (law@cygnus.com)
* fold-const.c (fold): Fix another type in COND_EXPR handling code.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index b7037de..0d04e91 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -5863,11 +5863,15 @@ fold (expr)
return pedantic_non_lvalue (convert (type, arg1));
case GE_EXPR:
case GT_EXPR:
+ if (TREE_UNSIGNED (TREE_TYPE (arg1)))
+ arg1 = convert (signed_type (TREE_TYPE (arg1)), arg1);
return pedantic_non_lvalue
(convert (type, fold (build1 (ABS_EXPR,
TREE_TYPE (arg1), arg1))));
case LE_EXPR:
case LT_EXPR:
+ if (TREE_UNSIGNED (TREE_TYPE (arg1)))
+ arg1 = convert (signed_type (TREE_TYPE (arg1)), arg1);
return pedantic_non_lvalue
(fold (build1 (NEGATE_EXPR, type,
convert (type,