diff options
author | Richard Henderson <rth@cygnus.com> | 1998-09-20 05:37:58 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-09-20 05:37:58 -0700 |
commit | 899f1ed6980f803397d2bc6a1efc6a406be4a37a (patch) | |
tree | 7aca1efede51bf0b68888064d5cf85afaacedb30 /gcc | |
parent | 056a3b121c17e7614fadc394c00383b35460f142 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fold-const.c | 4 |
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, |