diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-11-16 06:19:25 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-11-16 06:19:25 -0500 |
commit | 23bd99ae342707dae943a467c392cb7b446742c6 (patch) | |
tree | d7ab7b5f3079f911823057162f2cbb520c784f3a /gcc/fold-const.c | |
parent | 839c47964ea35b14d873a5c0774d85bcc0c5cbd9 (diff) | |
download | gcc-23bd99ae342707dae943a467c392cb7b446742c6.zip gcc-23bd99ae342707dae943a467c392cb7b446742c6.tar.gz gcc-23bd99ae342707dae943a467c392cb7b446742c6.tar.bz2 |
(optimize_bit_field_compare, decode_field_reference): Pass new arg to
get_inner_reference.
From-SVN: r13188
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 68808e0..2147e2e 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2312,6 +2312,7 @@ optimize_bit_field_compare (code, compare_type, lhs, rhs) enum machine_mode lmode, rmode, lnmode, rnmode; int lunsignedp, runsignedp; int lvolatilep = 0, rvolatilep = 0; + int alignment; tree linner, rinner; tree mask; tree offset; @@ -2320,7 +2321,7 @@ optimize_bit_field_compare (code, compare_type, lhs, rhs) if the same as the size of the underlying object, we aren't doing an extraction at all and so can do nothing. */ linner = get_inner_reference (lhs, &lbitsize, &lbitpos, &offset, &lmode, - &lunsignedp, &lvolatilep); + &lunsignedp, &lvolatilep, &alignment); if (linner == lhs || lbitsize == GET_MODE_BITSIZE (lmode) || lbitsize < 0 || offset != 0) return 0; @@ -2329,8 +2330,8 @@ optimize_bit_field_compare (code, compare_type, lhs, rhs) { /* If this is not a constant, we can only do something if bit positions, sizes, and signedness are the same. */ - rinner = get_inner_reference (rhs, &rbitsize, &rbitpos, &offset, - &rmode, &runsignedp, &rvolatilep); + rinner = get_inner_reference (rhs, &rbitsize, &rbitpos, &offset, &rmode, + &runsignedp, &rvolatilep, &alignment); if (rinner == rhs || lbitpos != rbitpos || lbitsize != rbitsize || lunsignedp != runsignedp || offset != 0) @@ -2503,6 +2504,7 @@ decode_field_reference (exp, pbitsize, pbitpos, pmode, punsignedp, tree mask, inner, offset; tree unsigned_type; int precision; + int alignment; /* All the optimizations using this function assume integer fields. There are problems with FP fields since the type_for_size call @@ -2523,7 +2525,7 @@ decode_field_reference (exp, pbitsize, pbitpos, pmode, punsignedp, inner = get_inner_reference (exp, pbitsize, pbitpos, &offset, pmode, - punsignedp, pvolatilep); + punsignedp, pvolatilep, &alignment); if ((inner == exp && and_mask == 0) || *pbitsize < 0 || offset != 0) return 0; |