+2019-02-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/89505
+ * tree-ssa-structalias.c (compute_dependence_clique): Make sure
+ to handle restrict pointed-to vars with multiple subvars
+ correctly.
+
2019-02-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/89489
+2019-02-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/89505
+ * gcc.dg/torture/pr89505.c: New testcase.
+
2019-02-26 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/opt77.adb: New test.
--- /dev/null
+/* { dg-do run } */
+
+struct S { int i; void *p; int j; };
+int a;
+int __attribute__((noinline))
+foo (struct S * __restrict p, int q)
+{
+ int *x = &p->j;
+ if (q)
+ x = &a;
+ p->j = 1;
+ *x = 2;
+ return p->j;
+}
+
+int main()
+{
+ struct S s;
+ if (foo (&s, 0) != 2)
+ __builtin_abort ();
+ return 0;
+}
maybe_set_dependence_info);
if (used)
{
- bitmap_set_bit (rvars, restrict_var->id);
+ /* Add all subvars to the set of restrict pointed-to set. */
+ for (unsigned sv = restrict_var->head; sv != 0;
+ sv = get_varinfo (sv)->next)
+ bitmap_set_bit (rvars, sv);
varinfo_t escaped = get_varinfo (find (escaped_id));
if (bitmap_bit_p (escaped->solution, restrict_var->id))
escaped_p = true;