re PR tree-optimization/51624 (Assert_Failure atree.adb:808 during stage 3)
PR tree-optimization/51624 * tree-sra.c (build_ref_for_model): When replicating a chain of COMPONENT_REFs, stop as soon as the offset would become negative. From-SVN: r182889
This commit is contained in:
parent
5dc28f42b4
commit
8594273a73
2 changed files with 14 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-01-04 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR tree-optimization/51624
|
||||
* tree-sra.c (build_ref_for_model): When replicating a chain of
|
||||
COMPONENT_REFs, stop as soon as the offset would become negative.
|
||||
|
||||
2012-01-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/51695
|
||||
|
|
|
@ -1520,11 +1520,16 @@ build_ref_for_model (location_t loc, tree base, HOST_WIDE_INT offset,
|
|||
do {
|
||||
tree field = TREE_OPERAND (expr, 1);
|
||||
tree cr_offset = component_ref_field_offset (expr);
|
||||
gcc_assert (cr_offset && host_integerp (cr_offset, 1));
|
||||
HOST_WIDE_INT bit_pos
|
||||
= tree_low_cst (cr_offset, 1) * BITS_PER_UNIT
|
||||
+ TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (field));
|
||||
|
||||
offset -= TREE_INT_CST_LOW (cr_offset) * BITS_PER_UNIT;
|
||||
offset -= TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (field));
|
||||
/* We can be called with a model different from the one associated
|
||||
with BASE so we need to avoid going up the chain too far. */
|
||||
if (offset - bit_pos < 0)
|
||||
break;
|
||||
|
||||
offset -= bit_pos;
|
||||
VEC_safe_push (tree, stack, cr_stack, expr);
|
||||
|
||||
expr = TREE_OPERAND (expr, 0);
|
||||
|
|
Loading…
Add table
Reference in a new issue