1 /* Check rotate pattern detection.  */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fno-ipa-icf -fdump-tree-optimized" } */
4 /* { dg-final { scan-tree-dump-times "r\[<>]\[<>]" 96 "optimized" } } */
5 
6 unsigned int
f1(unsigned int x,unsigned int y)7 f1 (unsigned int x, unsigned int y)
8 {
9   return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
10 }
11 
12 unsigned int
f2(unsigned int x,unsigned long int y)13 f2 (unsigned int x, unsigned long int y)
14 {
15   return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
16 }
17 
18 unsigned int
f3(unsigned int x,int y)19 f3 (unsigned int x, int y __attribute__((unused)))
20 {
21   return (x << 1) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
22 }
23 
24 unsigned int
f4(unsigned int x,int y)25 f4 (unsigned int x, int y __attribute__((unused)))
26 {
27   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) | (x >> 1);
28 }
29 
30 unsigned short int
f5(unsigned short int x,unsigned int y)31 f5 (unsigned short int x, unsigned int y)
32 {
33   return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
34 }
35 
36 unsigned short int
f6(unsigned short int x,unsigned long int y)37 f6 (unsigned short int x, unsigned long int y)
38 {
39   return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
40 }
41 
42 unsigned char
f7(unsigned char x,unsigned int y)43 f7 (unsigned char x, unsigned int y)
44 {
45   return (x << y) | (x >> (__CHAR_BIT__ - y));
46 }
47 
48 unsigned char
f8(unsigned char x,unsigned long int y)49 f8 (unsigned char x, unsigned long int y)
50 {
51   return (x << y) | (x >> (__CHAR_BIT__ - y));
52 }
53 
54 unsigned int
f9(unsigned int x,unsigned int y)55 f9 (unsigned int x, unsigned int y)
56 {
57   return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
58 }
59 
60 unsigned int
f10(unsigned int x,unsigned long int y)61 f10 (unsigned int x, unsigned long int y)
62 {
63   return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
64 }
65 
66 unsigned int
f11(unsigned int x,int y)67 f11 (unsigned int x, int y __attribute__((unused)))
68 {
69   return (x << 1) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
70 }
71 
72 unsigned int
f12(unsigned int x,int y)73 f12 (unsigned int x, int y __attribute__((unused)))
74 {
75   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) | (x >> 1);
76 }
77 
78 unsigned short int
f13(unsigned short int x,unsigned int y)79 f13 (unsigned short int x, unsigned int y)
80 {
81   return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
82 }
83 
84 unsigned short int
f14(unsigned short int x,unsigned long int y)85 f14 (unsigned short int x, unsigned long int y)
86 {
87   return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
88 }
89 
90 unsigned char
f15(unsigned char x,unsigned int y)91 f15 (unsigned char x, unsigned int y)
92 {
93   return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
94 }
95 
96 unsigned char
f16(unsigned char x,unsigned long int y)97 f16 (unsigned char x, unsigned long int y)
98 {
99   return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
100 }
101 
102 unsigned int
f17(unsigned int x,unsigned int y)103 f17 (unsigned int x, unsigned int y)
104 {
105   return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x << y);
106 }
107 
108 unsigned int
f18(unsigned int x,unsigned long int y)109 f18 (unsigned int x, unsigned long int y)
110 {
111   return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x << y);
112 }
113 
114 unsigned int
f19(unsigned int x,int y)115 f19 (unsigned int x, int y __attribute__((unused)))
116 {
117   return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) ^ (x << 1);
118 }
119 
120 unsigned int
f20(unsigned int x,int y)121 f20 (unsigned int x, int y __attribute__((unused)))
122 {
123   return (x >> 1) ^ (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
124 }
125 
126 unsigned short int
f21(unsigned short int x,unsigned int y)127 f21 (unsigned short int x, unsigned int y)
128 {
129   return (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x << y);
130 }
131 
132 unsigned short int
f22(unsigned short int x,unsigned long int y)133 f22 (unsigned short int x, unsigned long int y)
134 {
135   return (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x << y);
136 }
137 
138 unsigned char
f23(unsigned char x,unsigned int y)139 f23 (unsigned char x, unsigned int y)
140 {
141   return (x >> (__CHAR_BIT__ - y)) ^ (x << y);
142 }
143 
144 unsigned char
f24(unsigned char x,unsigned long int y)145 f24 (unsigned char x, unsigned long int y)
146 {
147   return (x >> (__CHAR_BIT__ - y)) ^ (x << y);
148 }
149 
150 unsigned int
f25(unsigned int x,unsigned int y)151 f25 (unsigned int x, unsigned int y)
152 {
153   return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x << y);
154 }
155 
156 unsigned int
f26(unsigned int x,unsigned long int y)157 f26 (unsigned int x, unsigned long int y)
158 {
159   return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x << y);
160 }
161 
162 unsigned int
f27(unsigned int x,int y)163 f27 (unsigned int x, int y __attribute__((unused)))
164 {
165   return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1)) ^ (x << 1);
166 }
167 
168 unsigned int
f28(unsigned int x,int y)169 f28 (unsigned int x, int y __attribute__((unused)))
170 {
171   return (x >> 1) ^ (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1));
172 }
173 
174 unsigned short int
f29(unsigned short int x,unsigned int y)175 f29 (unsigned short int x, unsigned int y)
176 {
177   return (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x << y);
178 }
179 
180 unsigned short int
f30(unsigned short int x,unsigned long int y)181 f30 (unsigned short int x, unsigned long int y)
182 {
183   return (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x << y);
184 }
185 
186 unsigned char
f31(unsigned char x,unsigned int y)187 f31 (unsigned char x, unsigned int y)
188 {
189   return (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x << y);
190 }
191 
192 unsigned char
f32(unsigned char x,unsigned long int y)193 f32 (unsigned char x, unsigned long int y)
194 {
195   return (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x << y);
196 }
197 
198 unsigned int
f33(unsigned int x,unsigned int y)199 f33 (unsigned int x, unsigned int y)
200 {
201   return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y));
202 }
203 
204 unsigned int
f34(unsigned int x,unsigned long int y)205 f34 (unsigned int x, unsigned long int y)
206 {
207   return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y));
208 }
209 
210 unsigned int
f35(unsigned int x,int y)211 f35 (unsigned int x, int y __attribute__((unused)))
212 {
213   return (x >> 1) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
214 }
215 
216 unsigned int
f36(unsigned int x,int y)217 f36 (unsigned int x, int y __attribute__((unused)))
218 {
219   return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) | (x << 1);
220 }
221 
222 unsigned short int
f37(unsigned short int x,unsigned int y)223 f37 (unsigned short int x, unsigned int y)
224 {
225   return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
226 }
227 
228 unsigned short int
f38(unsigned short int x,unsigned long int y)229 f38 (unsigned short int x, unsigned long int y)
230 {
231   return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
232 }
233 
234 unsigned char
f39(unsigned char x,unsigned int y)235 f39 (unsigned char x, unsigned int y)
236 {
237   return (x >> y) | (x << (__CHAR_BIT__ - y));
238 }
239 
240 unsigned char
f40(unsigned char x,unsigned long int y)241 f40 (unsigned char x, unsigned long int y)
242 {
243   return (x >> y) | (x << (__CHAR_BIT__ - y));
244 }
245 
246 unsigned int
f41(unsigned int x,unsigned int y)247 f41 (unsigned int x, unsigned int y)
248 {
249   return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - y));
250 }
251 
252 unsigned int
f42(unsigned int x,unsigned long int y)253 f42 (unsigned int x, unsigned long int y)
254 {
255   return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - y));
256 }
257 
258 unsigned int
f43(unsigned int x,int y)259 f43 (unsigned int x, int y __attribute__((unused)))
260 {
261   return (x >> 1) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1));
262 }
263 
264 unsigned int
f44(unsigned int x,int y)265 f44 (unsigned int x, int y __attribute__((unused)))
266 {
267   return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1)) | (x << 1);
268 }
269 
270 unsigned short int
f45(unsigned short int x,unsigned int y)271 f45 (unsigned short int x, unsigned int y)
272 {
273   return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned short) - y));
274 }
275 
276 unsigned short int
f46(unsigned short int x,unsigned long int y)277 f46 (unsigned short int x, unsigned long int y)
278 {
279   return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned short) - y));
280 }
281 
282 unsigned char
f47(unsigned char x,unsigned int y)283 f47 (unsigned char x, unsigned int y)
284 {
285   return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned char) - y));
286 }
287 
288 unsigned char
f48(unsigned char x,unsigned long int y)289 f48 (unsigned char x, unsigned long int y)
290 {
291   return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned char) - y));
292 }
293 
294 unsigned int
f49(unsigned int x,unsigned int y)295 f49 (unsigned int x, unsigned int y)
296 {
297   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x >> y);
298 }
299 
300 unsigned int
f50(unsigned int x,unsigned long int y)301 f50 (unsigned int x, unsigned long int y)
302 {
303   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x >> y);
304 }
305 
306 unsigned int
f51(unsigned int x,int y)307 f51 (unsigned int x, int y __attribute__((unused)))
308 {
309   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) ^ (x >> 1);
310 }
311 
312 unsigned int
f52(unsigned int x,int y)313 f52 (unsigned int x, int y __attribute__((unused)))
314 {
315   return (x << 1) ^ (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
316 }
317 
318 unsigned short int
f53(unsigned short int x,unsigned int y)319 f53 (unsigned short int x, unsigned int y)
320 {
321   return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x >> y);
322 }
323 
324 unsigned short int
f54(unsigned short int x,unsigned long int y)325 f54 (unsigned short int x, unsigned long int y)
326 {
327   return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x >> y);
328 }
329 
330 unsigned char
f55(unsigned char x,unsigned int y)331 f55 (unsigned char x, unsigned int y)
332 {
333   return (x << (__CHAR_BIT__ - y)) ^ (x >> y);
334 }
335 
336 unsigned char
f56(unsigned char x,unsigned long int y)337 f56 (unsigned char x, unsigned long int y)
338 {
339   return (x << (__CHAR_BIT__ - y)) ^ (x >> y);
340 }
341 
342 unsigned int
f57(unsigned int x,unsigned int y)343 f57 (unsigned int x, unsigned int y)
344 {
345   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x >> y);
346 }
347 
348 unsigned int
f58(unsigned int x,unsigned long int y)349 f58 (unsigned int x, unsigned long int y)
350 {
351   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x >> y);
352 }
353 
354 unsigned int
f59(unsigned int x,int y)355 f59 (unsigned int x, int y __attribute__((unused)))
356 {
357   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) ^ (x >> 1);
358 }
359 
360 unsigned int
f60(unsigned int x,int y)361 f60 (unsigned int x, int y __attribute__((unused)))
362 {
363   return (x << 1) ^ (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
364 }
365 
366 unsigned short int
f61(unsigned short int x,unsigned int y)367 f61 (unsigned short int x, unsigned int y)
368 {
369   return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x >> y);
370 }
371 
372 unsigned short int
f62(unsigned short int x,unsigned long int y)373 f62 (unsigned short int x, unsigned long int y)
374 {
375   return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x >> y);
376 }
377 
378 unsigned char
f63(unsigned char x,unsigned int y)379 f63 (unsigned char x, unsigned int y)
380 {
381   return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x >> y);
382 }
383 
384 unsigned char
f64(unsigned char x,unsigned long int y)385 f64 (unsigned char x, unsigned long int y)
386 {
387   return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x >> y);
388 }
389 
390 unsigned int
f65(unsigned int x,unsigned int y)391 f65 (unsigned int x, unsigned int y)
392 {
393   return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
394 }
395 
396 unsigned int
f66(unsigned int x,unsigned long int y)397 f66 (unsigned int x, unsigned long int y)
398 {
399   return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
400 }
401 
402 unsigned int
f67(unsigned int x,int y)403 f67 (unsigned int x, int y __attribute__((unused)))
404 {
405   return (x << 1) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
406 }
407 
408 unsigned int
f68(unsigned int x,int y)409 f68 (unsigned int x, int y __attribute__((unused)))
410 {
411   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) + (x >> 1);
412 }
413 
414 unsigned short int
f69(unsigned short int x,unsigned int y)415 f69 (unsigned short int x, unsigned int y)
416 {
417   return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
418 }
419 
420 unsigned short int
f70(unsigned short int x,unsigned long int y)421 f70 (unsigned short int x, unsigned long int y)
422 {
423   return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
424 }
425 
426 unsigned char
f71(unsigned char x,unsigned int y)427 f71 (unsigned char x, unsigned int y)
428 {
429   return (x << y) + (x >> (__CHAR_BIT__ - y));
430 }
431 
432 unsigned char
f72(unsigned char x,unsigned long int y)433 f72 (unsigned char x, unsigned long int y)
434 {
435   return (x << y) + (x >> (__CHAR_BIT__ - y));
436 }
437 
438 unsigned int
f73(unsigned int x,unsigned int y)439 f73 (unsigned int x, unsigned int y)
440 {
441   return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
442 }
443 
444 unsigned int
f74(unsigned int x,unsigned long int y)445 f74 (unsigned int x, unsigned long int y)
446 {
447   return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
448 }
449 
450 unsigned int
f75(unsigned int x,int y)451 f75 (unsigned int x, int y __attribute__((unused)))
452 {
453   return (x << 1) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
454 }
455 
456 unsigned int
f76(unsigned int x,int y)457 f76 (unsigned int x, int y __attribute__((unused)))
458 {
459   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) + (x >> 1);
460 }
461 
462 unsigned short int
f77(unsigned short int x,unsigned int y)463 f77 (unsigned short int x, unsigned int y)
464 {
465   return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
466 }
467 
468 unsigned short int
f78(unsigned short int x,unsigned long int y)469 f78 (unsigned short int x, unsigned long int y)
470 {
471   return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
472 }
473 
474 unsigned char
f79(unsigned char x,unsigned int y)475 f79 (unsigned char x, unsigned int y)
476 {
477   return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
478 }
479 
480 unsigned char
f80(unsigned char x,unsigned long int y)481 f80 (unsigned char x, unsigned long int y)
482 {
483   return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
484 }
485 
486 unsigned int
f81(unsigned int x,unsigned int y)487 f81 (unsigned int x, unsigned int y)
488 {
489   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) + (x >> y);
490 }
491 
492 unsigned int
f82(unsigned int x,unsigned long int y)493 f82 (unsigned int x, unsigned long int y)
494 {
495   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) + (x >> y);
496 }
497 
498 unsigned int
f83(unsigned int x,int y)499 f83 (unsigned int x, int y __attribute__((unused)))
500 {
501   return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) + (x >> 1);
502 }
503 
504 unsigned int
f84(unsigned int x,int y)505 f84 (unsigned int x, int y __attribute__((unused)))
506 {
507   return (x << 1) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
508 }
509 
510 unsigned short int
f85(unsigned short int x,unsigned int y)511 f85 (unsigned short int x, unsigned int y)
512 {
513   return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) + (x >> y);
514 }
515 
516 unsigned short int
f86(unsigned short int x,unsigned long int y)517 f86 (unsigned short int x, unsigned long int y)
518 {
519   return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) + (x >> y);
520 }
521 
522 unsigned char
f87(unsigned char x,unsigned int y)523 f87 (unsigned char x, unsigned int y)
524 {
525   return (x << (__CHAR_BIT__ - y)) + (x >> y);
526 }
527 
528 unsigned char
f88(unsigned char x,unsigned long int y)529 f88 (unsigned char x, unsigned long int y)
530 {
531   return (x << (__CHAR_BIT__ - y)) + (x >> y);
532 }
533 
534 unsigned int
f89(unsigned int x,unsigned int y)535 f89 (unsigned int x, unsigned int y)
536 {
537   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) + (x >> y);
538 }
539 
540 unsigned int
f90(unsigned int x,unsigned long int y)541 f90 (unsigned int x, unsigned long int y)
542 {
543   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) + (x >> y);
544 }
545 
546 unsigned int
f91(unsigned int x,int y)547 f91 (unsigned int x, int y __attribute__((unused)))
548 {
549   return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) + (x >> 1);
550 }
551 
552 unsigned int
f92(unsigned int x,int y)553 f92 (unsigned int x, int y __attribute__((unused)))
554 {
555   return (x << 1) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
556 }
557 
558 unsigned short int
f93(unsigned short int x,unsigned int y)559 f93 (unsigned short int x, unsigned int y)
560 {
561   return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) + (x >> y);
562 }
563 
564 unsigned short int
f94(unsigned short int x,unsigned long int y)565 f94 (unsigned short int x, unsigned long int y)
566 {
567   return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) + (x >> y);
568 }
569 
570 unsigned char
f95(unsigned char x,unsigned int y)571 f95 (unsigned char x, unsigned int y)
572 {
573   return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) + (x >> y);
574 }
575 
576 unsigned char
f96(unsigned char x,unsigned long int y)577 f96 (unsigned char x, unsigned long int y)
578 {
579   return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) + (x >> y);
580 }
581