]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/tree-ssa/pr92834.c
Fix profile update in tree_transform_and_unroll_loop
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / pr92834.c
1 /* PR tree-optimization/92834 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fdump-tree-optimized" } */
4 /* { dg-final { scan-tree-dump-times "MIN_EXPR <" 8 "optimized" } } */
5 /* { dg-final { scan-tree-dump-times "MAX_EXPR <" 8 "optimized" } } */
6
7 static inline unsigned
8 umax1 (unsigned a, unsigned b)
9 {
10 return a - ((a - b) & -(a < b));
11 }
12
13 static inline unsigned
14 umin1 (unsigned a, unsigned b)
15 {
16 return a - ((a - b) & -(a > b));
17 }
18
19 static inline int
20 smax1 (int a, int b)
21 {
22 return a - ((a - b) & -(a < b));
23 }
24
25 static inline int
26 smin1 (int a, int b)
27 {
28 return a - ((a - b) & -(a > b));
29 }
30
31 static inline unsigned long long
32 umax2 (unsigned long long a, unsigned long long b)
33 {
34 return a - ((a - b) & -(a <= b));
35 }
36
37 static inline unsigned long long
38 umin2 (unsigned long long a, unsigned long long b)
39 {
40 return a - ((a - b) & -(a >= b));
41 }
42
43 static inline long long
44 smax2 (long long a, long long b)
45 {
46 return a - ((a - b) & -(a <= b));
47 }
48
49 static inline long long
50 smin2 (long long a, long long b)
51 {
52 return a - ((a - b) & -(a >= b));
53 }
54
55 static inline unsigned
56 umax3 (unsigned a, unsigned b)
57 {
58 return a + ((b - a) & -(a < b));
59 }
60
61 static inline unsigned
62 umin3 (unsigned a, unsigned b)
63 {
64 return a + ((b - a) & -(a > b));
65 }
66
67 static inline int
68 smax3 (int a, int b)
69 {
70 return a + ((b - a) & -(a < b));
71 }
72
73 static inline int
74 smin3 (int a, int b)
75 {
76 return a + ((b - a) & -(a > b));
77 }
78
79 static inline unsigned long long
80 umax4 (unsigned long long a, unsigned long long b)
81 {
82 return a + ((b - a) & -(a <= b));
83 }
84
85 static inline unsigned long long
86 umin4 (unsigned long long a, unsigned long long b)
87 {
88 return a + ((b - a) & -(a >= b));
89 }
90
91 static inline long long
92 smax4 (long long a, long long b)
93 {
94 return a + ((b - a) & -(a <= b));
95 }
96
97 static inline long long
98 smin4 (long long a, long long b)
99 {
100 return a + ((b - a) & -(a >= b));
101 }
102
103 void
104 test (unsigned *x, int *y, unsigned long long *z, long long *w)
105 {
106 x[2] = umax1 (x[0], x[1]);
107 x[5] = umin1 (x[2], x[3]);
108 y[2] = smax1 (y[0], y[1]);
109 y[5] = smin1 (y[2], y[3]);
110 z[2] = umax2 (z[0], z[1]);
111 z[5] = umin2 (z[2], z[3]);
112 w[2] = smax2 (w[0], w[1]);
113 w[5] = smin2 (w[2], w[3]);
114 x[8] = umax3 (x[6], x[7]);
115 x[11] = umin3 (x[9], x[10]);
116 y[8] = smax3 (y[6], y[7]);
117 y[11] = smin3 (y[9], y[10]);
118 z[8] = umax4 (z[6], z[7]);
119 z[11] = umin4 (z[9], z[10]);
120 w[8] = smax4 (w[6], w[7]);
121 w[11] = smin4 (w[9], w[10]);
122 }