fold-const.c (fold_truthop): Verify that the lhs and rhs are in the same bit position when...

* fold-const.c (fold_truthop): Verify that the lhs and rhs are
       in the same bit position when optimizing bitfield references
       which have the same mask.

From-SVN: r25993
This commit is contained in:
Charles M. Hannum 1999-03-25 18:08:54 -07:00 committed by Jeff Law
parent 5197829d3c
commit 1424137450
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,9 @@
Fri Mar 26 01:59:15 1999 "Charles M. Hannum" <root@ihack.net>
* fold-const.c (fold_truthop): Verify that the lhs and rhs are
in the same bit position when optimizing bitfield references
which have the same mask.
Thu Mar 25 22:53:27 1999 Martin von Löwis <loewis@informatik.hu-berlin.de>
* gcc.texi (Copy Assignment): New node.

View File

@ -3934,11 +3934,13 @@ fold_truthop (code, truth_type, lhs, rhs)
/* Make a mask that corresponds to both fields being compared.
Do this for both items being compared. If the masks agree,
and the bits being compared are in the same position, then
we can do this by masking both and comparing the masked
results. */
ll_mask = const_binop (BIT_IOR_EXPR, ll_mask, rl_mask, 0);
lr_mask = const_binop (BIT_IOR_EXPR, lr_mask, rr_mask, 0);
if (operand_equal_p (ll_mask, lr_mask, 0) && lnbitsize == rnbitsize)
if (operand_equal_p (ll_mask, lr_mask, 0)
&& lnbitsize == rnbitsize && xll_bitpos == xlr_bitpos)
{
lhs = make_bit_field_ref (ll_inner, type, lnbitsize, lnbitpos,
ll_unsignedp || rl_unsignedp);