1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-optimized" } */
       3  
       4  struct param { int *a; };
       5  void foo(struct param *p);
       6  int bar(void)
       7  {
       8    int a[32];
       9    struct param p;
      10    a[0] = 1;
      11    a[1] = 1;
      12    p.a = &a[0];
      13    foo(&p);
      14    return a[0] + *p.a;
      15  }
      16  
      17  /* We need to have both: a load from "a[0]" and a load from "*p.a",
      18     the latter is an ssa temporary.  */
      19  /* { dg-final { scan-tree-dump "= a.0.;" "optimized" } } */
      20  /* { dg-final { scan-tree-dump "= \\*\[^\r\n\]*_.;" "optimized" } } */