Bootstrap and regtest running on x86_64-unknown-linux-gnu.
Richard. 2019-04-24 Richard Biener <rguent...@suse.de> PR middle-end/90213 * gimple-fold.c (fold_const_aggregate_ref_1): Do multiplication by size and BITS_PER_UNIT on poly-wide-ints. Index: gcc/gimple-fold.c =================================================================== --- gcc/gimple-fold.c (revision 270537) +++ gcc/gimple-fold.c (working copy) @@ -6983,14 +6983,10 @@ fold_const_aggregate_ref_1 (tree t, tree = wi::sext (wi::to_poly_offset (idx) - wi::to_poly_offset (low_bound), TYPE_PRECISION (TREE_TYPE (idx))); - + woffset *= tree_to_uhwi (unit_size); + woffset *= BITS_PER_UNIT; if (woffset.to_shwi (&offset)) { - /* TODO: This code seems wrong, multiply then check - to see if it fits. */ - offset *= tree_to_uhwi (unit_size); - offset *= BITS_PER_UNIT; - base = TREE_OPERAND (t, 0); ctor = get_base_constructor (base, &offset, valueize); /* Empty constructor. Always fold to 0. */