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
foo(__int128 x,unsigned int y,char z)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 }
67