1  /* { dg-do link { target natural_alignment_32 } } */
       2  /* { dg-options "-O -fdump-tree-fre1-details" } */
       3  
       4  void link_error (void);
       5  
       6  void test1 (int *p, int *q)
       7  {
       8    *p = 1;
       9    *q = 1;
      10    if (*p != 1)
      11      link_error ();
      12  }
      13  
      14  void test2 (int *p, int *q, int t)
      15  {
      16    *p = t;
      17    *q = t;
      18    if (*p != t)
      19      link_error ();
      20  }
      21  
      22  void test3 (int *q, int *p)
      23  {
      24    int tem = *p;
      25    *q = tem;
      26    if (*p != tem)
      27      link_error ();
      28  }
      29  
      30  char a[4];
      31  struct A { char a[4]; };
      32  void test4 (struct A *p)
      33  {
      34    a[0] = p->a[0];
      35    a[0] = p->a[0];
      36    a[0] = p->a[0];
      37  }
      38  
      39  int main() { return 0; }
      40  
      41  /* { dg-final { scan-tree-dump-times "Replaced \\\*p" 3 "fre1" } } */
      42  /* { dg-final { scan-tree-dump-times "Replaced p_.\\(D\\)->" 2 "fre1" } } */
      43  /* { dg-final { scan-tree-dump-times "Deleted redundant store a\\\[0\\\]" 2 "fre1" } } */