1  /* PR rtl-optimization/88296 */
       2  /* { dg-do compile { target int128 } } */
       3  /* { dg-options "-O2 -march=core2 -fnon-call-exceptions -fschedule-insns -fselective-scheduling -funroll-all-loops -fno-caller-saves -fno-guess-branch-probability -fno-ivopts -fno-rerun-cse-after-loop -fno-split-wide-types -fno-tree-bit-ccp -fno-tree-coalesce-vars --param max-completely-peeled-insns=13" } */
       4  
       5  int a, b, c;
       6  void bar (int, int);
       7  
       8  void
       9  foo (__int128 x, unsigned int y, char z)
      10  {
      11    __int128 *d = &x;
      12    unsigned short int e = 0;
      13    unsigned char f = 0;
      14    char g = 1;
      15    (void) d;
      16    bar (0, 0);
      17    while (e < 1)
      18      {
      19        __int128 h = 1;
      20        ++c;
      21        e = x;
      22        g /= e;
      23        if (g != 0)
      24          {
      25            int i;
      26            if (g == 0)
      27              i = a;
      28            else
      29              {
      30                ++g;
      31                i = g;
      32              }
      33            if (i == 0)
      34              {
      35                a -= b + (!!g ? y : 0);
      36                break;
      37              }
      38            for (g = 0; g < 3; ++g)
      39              {
      40                unsigned char *j = &f;
      41                x /= h;
      42                h /= x;
      43                for (i = 0; i < 2; ++i)
      44                  {
      45                    z <<= ((!!g && !!c) ? (b + 1) : (1 / *j));
      46                    y = ~e;
      47                    g &= y;
      48                    x |= 1;
      49                    b *= i;
      50                    ++c;
      51                  }
      52                f /= b > 1;
      53                e /= f;
      54                x += b << 32;	/* { dg-warning "left shift count" } */
      55              }
      56            if (g << g == 0)
      57              {
      58                e *= b + 1;
      59                a = 32;
      60                f += (e << a) + (y && 1);
      61                x = z;
      62                c += x / 3;
      63              }
      64          }
      65      }
      66  }