+2013-11-29 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/59338
+ * tree-cfg.c (verify_expr): Restrict bounds verification of
+ BIT_FIELD_REF arguments to non-aggregate typed base objects.
+
2013-11-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/59334
tree t0 = TREE_OPERAND (t, 0);
tree t1 = TREE_OPERAND (t, 1);
tree t2 = TREE_OPERAND (t, 2);
- tree t0_type = TREE_TYPE (t0);
- unsigned HOST_WIDE_INT t0_size = 0;
-
- if (tree_fits_uhwi_p (TYPE_SIZE (t0_type)))
- t0_size = tree_to_uhwi (TYPE_SIZE (t0_type));
- else
- {
- HOST_WIDE_INT t0_max_size = max_int_size_in_bytes (t0_type);
- if (t0_max_size > 0)
- t0_size = t0_max_size * BITS_PER_UNIT;
- }
if (!tree_fits_uhwi_p (t1)
|| !tree_fits_uhwi_p (t2))
{
"match field size of BIT_FIELD_REF");
return t;
}
- if (t0_size != 0
- && tree_to_uhwi (t1) + tree_to_uhwi (t2) > t0_size)
+ if (!AGGREGATE_TYPE_P (TREE_TYPE (t0))
+ && (tree_to_uhwi (t1) + tree_to_uhwi (t2)
+ > tree_to_uhwi (TYPE_SIZE (TREE_TYPE (t0)))))
{
error ("position plus size exceeds size of referenced object in "
"BIT_FIELD_REF");