From 2bd21a021ed7d763a7be92cfa1048f3e95e9a3a6 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Wed, 26 May 1999 20:33:58 -0600 Subject: [PATCH] fold-const.c (fold_truthop): Make the field reference unsigned when converting a single bit compare. h * fold-const.c (fold_truthop): Make the field reference unsigned when converting a single bit compare. From-SVN: r27202 --- gcc/fold-const.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/gcc/fold-const.c b/gcc/fold-const.c index b67ff82868d..7d63ea84842 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -3806,11 +3806,10 @@ fold_truthop (code, truth_type, lhs, rhs) { if (l_const && integer_zerop (l_const) && integer_pow2p (ll_mask)) { - /* Do not sign extend the constant here. The left operand - is either always unsigned or there is a BIT_AND_EXPR that - masks out the extension bits. */ - if (! (ll_unsignedp || ll_and_mask != 0)) - abort (); + /* Make the left operand unsigned, since we are only interested + in the value of one bit. Otherwise we are doing the wrong + thing below. */ + ll_unsignedp = 1; l_const = ll_mask; } else @@ -3822,8 +3821,7 @@ fold_truthop (code, truth_type, lhs, rhs) { if (r_const && integer_zerop (r_const) && integer_pow2p (rl_mask)) { - if (! (rl_unsignedp || rl_and_mask != 0)) - abort (); + rl_unsignedp = 1; r_const = rl_mask; } else -- 2.30.2