+2016-07-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/71908
+ * tree-ssa-structalias.c (get_constraint_for_component_ref): Handle
+ symbolic constants in a more reliable way.
+
2016-07-19 Ilya Enkovich <ilya.enkovich@intel.com>
* tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Update
+2016-07-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/71908
+ * gcc.dg/torture/pr71908.c: New testcase.
+
2016-07-18 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/71493
t = get_ref_base_and_extent (t, &bitpos, &bitsize, &bitmaxsize, &reverse);
+ /* We can end up here for component references on a
+ VIEW_CONVERT_EXPR <>(&foobar) or things like a
+ BIT_FIELD_REF <&MEM[(void *)&b + 4B], ...>. So for
+ symbolic constants simply give up. */
+ if (TREE_CODE (t) == ADDR_EXPR)
+ {
+ constraint_expr result;
+ result.type = SCALAR;
+ result.var = anything_id;
+ result.offset = 0;
+ results->safe_push (result);
+ return;
+ }
+
/* Pretend to take the address of the base, we'll take care of
adding the required subset of sub-fields below. */
get_constraint_for_1 (t, results, true, lhs_p);
}
else if (result.type == ADDRESSOF)
{
- /* We can end up here for component references on a
- VIEW_CONVERT_EXPR <>(&foobar). */
+ /* We can end up here for component references on constants like
+ VIEW_CONVERT_EXPR <>({ 0, 1, 2, 3 })[i]. */
result.type = SCALAR;
result.var = anything_id;
result.offset = 0;