PR middle-end/92622 - FAIL: gcc.dg/Warray-bounds-22.c on ILP32: missing warnings for VLA on lines 67 and 69
gcc/ChangeLog: PR middle-end/92622 * tree-vrp.c (vrp_prop::check_array_ref): Avoid using a variable left uninitialized by get_addr_base_and_unit_offset ofn failure. From-SVN: r279029
This commit is contained in:
parent
b801c7cd79
commit
37cd34543d
@ -1,3 +1,9 @@
|
||||
2019-12-05 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
PR middle-end/92622
|
||||
* tree-vrp.c (vrp_prop::check_array_ref): Avoid using a variable
|
||||
left uninitialized by get_addr_base_and_unit_offset on failure.
|
||||
|
||||
2019-12-05 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* ipa-prop.c (ipa_set_jf_unknown): Do not clear bits and m_vr.
|
||||
@ -1488,7 +1494,7 @@
|
||||
(ipa_update_overall_fn_summary): Add RESET parameter.
|
||||
* ipa-fnsummary.h (ipa_update_overall_fn_summary): Update prototype.
|
||||
* ipa-inline-transform.c (inline_call): Enable incremental updates.
|
||||
|
||||
|
||||
2019-11-20 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* tree-vect-slp.c (vect_schedule_slp_instance): Restore stmt
|
||||
|
@ -3516,7 +3516,6 @@ vrp_prop::check_array_ref (location_t location, tree ref,
|
||||
tree ptrdiff_max = TYPE_MAX_VALUE (ptrdiff_type_node);
|
||||
tree maxbound = ptrdiff_max;
|
||||
tree arg = TREE_OPERAND (ref, 0);
|
||||
poly_int64 off;
|
||||
|
||||
const bool compref = TREE_CODE (arg) == COMPONENT_REF;
|
||||
if (compref)
|
||||
@ -3535,19 +3534,22 @@ vrp_prop::check_array_ref (location_t location, tree ref,
|
||||
size wouldn't necessarily be correct if the reference is
|
||||
to its flexible array member initialized in a different
|
||||
translation unit. */
|
||||
tree base = get_addr_base_and_unit_offset (arg, &off);
|
||||
if (!compref && base && DECL_P (base))
|
||||
if (tree basesize = DECL_SIZE_UNIT (base))
|
||||
if (TREE_CODE (basesize) == INTEGER_CST)
|
||||
{
|
||||
maxbound = basesize;
|
||||
decl = base;
|
||||
}
|
||||
poly_int64 off;
|
||||
if (tree base = get_addr_base_and_unit_offset (arg, &off))
|
||||
{
|
||||
if (!compref && DECL_P (base))
|
||||
if (tree basesize = DECL_SIZE_UNIT (base))
|
||||
if (TREE_CODE (basesize) == INTEGER_CST)
|
||||
{
|
||||
maxbound = basesize;
|
||||
decl = base;
|
||||
}
|
||||
|
||||
if (known_gt (off, 0))
|
||||
maxbound = wide_int_to_tree (sizetype,
|
||||
wi::sub (wi::to_wide (maxbound),
|
||||
off));
|
||||
if (known_gt (off, 0))
|
||||
maxbound = wide_int_to_tree (sizetype,
|
||||
wi::sub (wi::to_wide (maxbound),
|
||||
off));
|
||||
}
|
||||
}
|
||||
else
|
||||
maxbound = fold_convert (sizetype, maxbound);
|
||||
|
Loading…
Reference in New Issue
Block a user