re PR tree-optimization/90213 (UBSAN: signed integer overflow: -5621332293356458048 * 8 cannot be represented in type 'long int')
2019-04-24 Richard Biener <rguenther@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. From-SVN: r270570
This commit is contained in:
parent
f469220df6
commit
a9e6359a90
2 changed files with 8 additions and 6 deletions
|
@ -1,3 +1,9 @@
|
|||
2019-04-24 Richard Biener <rguenther@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.
|
||||
|
||||
2019-04-25 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/90194
|
||||
|
|
|
@ -6983,14 +6983,10 @@ fold_const_aggregate_ref_1 (tree t, tree (*valueize) (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. */
|
||||
|
|
Loading…
Add table
Reference in a new issue