1  /* { dg-do run } */
       2  
       3  extern void abort (void);
       4  
       5  int i, j, *pj = &j, **ppj = &pj;
       6  int x, *px = &x;
       7  
       8  short s, *ps = &s, k;
       9  
      10  unsigned short u, *pu = &u, **ppu = &pu;
      11  
      12  char c, *pc = &c;
      13  
      14  unsigned char v = 48;
      15  
      16  static int
      17  bar (int p)
      18  {
      19    p = k;
      20    *px = **ppu = i;
      21    *ppj = &p;
      22    if (**ppj)
      23      *pj = p;
      24    return p;
      25  }
      26  
      27  void __attribute__((noinline))
      28  foo ()
      29  {
      30    for (; i <= 3; i++)
      31      for (; j; j--);
      32  
      33    u ^= bar (*pj);
      34  
      35    for (k = 1; k >= 0; k--)
      36      {
      37        int l;
      38        bar (0);
      39        for (l = 1; l < 5; l++)
      40  	{
      41  	  int m;
      42  	  for (m = 6; m; m--)
      43  	    {
      44  	      v--;
      45  	      *ps = *pc;
      46  	    }
      47  	}
      48      }
      49  }
      50  
      51  int
      52  main ()
      53  {
      54    foo ();
      55    if (v != 0)
      56      abort ();
      57    return 0;
      58  }