1  /* PR rtl-optimization/47337 */
       2  
       3  static unsigned int a[256], b = 0;
       4  static char c = 0;
       5  static int d = 0, *f = &d;
       6  static long long e = 0;
       7  
       8  static short
       9  foo (long long x, long long y)
      10  {
      11    return x / y;
      12  }
      13  
      14  static char
      15  bar (char x, char y)
      16  {
      17    return x - y;
      18  }
      19  
      20  static int
      21  baz (int x, int y)
      22  {
      23    *f = (y != (short) (y * 3));
      24    for (c = 0; c < 2; c++)
      25      {
      26      lab:
      27        if (d)
      28  	{
      29  	  if (e)
      30  	    e = 1;
      31  	  else
      32  	    return x;
      33  	}
      34        else
      35  	{
      36  	  d = 1;
      37  	  goto lab;
      38  	}
      39        f = &d;
      40      }
      41    return x;
      42  }
      43  
      44  static void
      45  fnx (unsigned long long x, int y)
      46  {
      47    if (!y)
      48      {
      49        b = a[b & 1];
      50        b = a[b & 1];
      51        b = a[(b ^ (x & 1)) & 1];
      52        b = a[(b ^ (x & 1)) & 1];
      53      }
      54  }
      55  
      56  char *volatile w = "2";
      57  
      58  int
      59  main ()
      60  {
      61    int h = 0;
      62    unsigned int k = 0;
      63    int l[8];
      64    int i, j;
      65  
      66    if (__builtin_strcmp (w, "1") == 0)
      67      h = 1;
      68  
      69    for (i = 0; i < 256; i++)
      70      {
      71        for (j = 8; j > 0; j--)
      72  	k = 1;
      73        a[i] = k;
      74      }
      75    for (i = 0; i < 8; i++)
      76      l[i] = 0;
      77  
      78    d = bar (c, c);
      79    d = baz (c, 1 | foo (l[0], 10));
      80    fnx (d, h);
      81    fnx (e, h);
      82  
      83    if (d != 0)
      84      __builtin_abort ();
      85    return 0;
      86  }