libstdc++: Fix -Wsign-compare warning in std::string::resize_for_overwrite
[official-gcc.git] / gcc / testsuite / c-c++-common / rotate-2.c
blob544a7ca298fe7d9f4c496127857391963568e21b
1 /* Check rotate pattern detection. */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fno-ipa-icf -fdump-tree-optimized" } */
4 /* Rotates should be recognized only in functions with | instead of + or ^,
5 or in functions that have constant shift counts (unused attribute on y). */
6 /* { dg-final { scan-tree-dump-times "r\[<>]\[<>]" 48 "optimized" } } */
8 unsigned int
9 f1 (unsigned int x, unsigned int y)
11 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
14 unsigned int
15 f2 (unsigned int x, unsigned long int y)
17 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
20 unsigned int
21 f3 (unsigned int x, int y __attribute__((unused)))
23 return (x << 1) | (x >> ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
26 unsigned int
27 f4 (unsigned int x, int y __attribute__((unused)))
29 return (x << ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) | (x >> 1);
32 unsigned short int
33 f5 (unsigned short int x, unsigned int y)
35 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
36 __builtin_unreachable ();
37 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1)));
40 unsigned short int
41 f6 (unsigned short int x, unsigned long int y)
43 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
44 __builtin_unreachable ();
45 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1)));
48 unsigned char
49 f7 (unsigned char x, unsigned int y)
51 if (y >= __CHAR_BIT__)
52 __builtin_unreachable ();
53 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ - 1)));
56 unsigned char
57 f8 (unsigned char x, unsigned long int y)
59 if (y >= __CHAR_BIT__)
60 __builtin_unreachable ();
61 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ - 1)));
64 unsigned int
65 f9 (unsigned int x, unsigned int y)
67 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
70 unsigned int
71 f10 (unsigned int x, unsigned long int y)
73 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
76 unsigned int
77 f11 (unsigned int x, int y __attribute__((unused)))
79 return (x << 1) | (x >> ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
82 unsigned int
83 f12 (unsigned int x, int y __attribute__((unused)))
85 return (x << ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) | (x >> 1);
88 unsigned short int
89 f13 (unsigned short int x, unsigned int y)
91 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
92 __builtin_unreachable ();
93 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1)));
96 unsigned short int
97 f14 (unsigned short int x, unsigned long int y)
99 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
100 __builtin_unreachable ();
101 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1)));
104 unsigned char
105 f15 (unsigned char x, unsigned int y)
107 if (y >= __CHAR_BIT__)
108 __builtin_unreachable ();
109 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1)));
112 unsigned char
113 f16 (unsigned char x, unsigned long int y)
115 if (y >= __CHAR_BIT__)
116 __builtin_unreachable ();
117 return (x << y) | (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1)));
120 unsigned int
121 f17 (unsigned int x, unsigned int y)
123 return (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) ^ (x << y);
126 unsigned int
127 f18 (unsigned int x, unsigned long int y)
129 return (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) ^ (x << y);
132 unsigned int
133 f19 (unsigned int x, int y __attribute__((unused)))
135 return (x >> ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) ^ (x << 1);
138 unsigned int
139 f20 (unsigned int x, int y __attribute__((unused)))
141 return (x >> 1) ^ (x << ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
144 unsigned short int
145 f21 (unsigned short int x, unsigned int y)
147 return (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1))) ^ (x << y);
150 unsigned short int
151 f22 (unsigned short int x, unsigned long int y)
153 return (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1))) ^ (x << y);
156 unsigned char
157 f23 (unsigned char x, unsigned int y)
159 return (x >> ((-y) & (__CHAR_BIT__ - 1))) ^ (x << y);
162 unsigned char
163 f24 (unsigned char x, unsigned long int y)
165 return (x >> ((-y) & (__CHAR_BIT__ - 1))) ^ (x << y);
168 unsigned int
169 f25 (unsigned int x, unsigned int y)
171 return (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) ^ (x << y);
174 unsigned int
175 f26 (unsigned int x, unsigned long int y)
177 return (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) ^ (x << y);
180 unsigned int
181 f27 (unsigned int x, int y __attribute__((unused)))
183 return (x >> ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) ^ (x << 1);
186 unsigned int
187 f28 (unsigned int x, int y __attribute__((unused)))
189 return (x >> 1) ^ (x << ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
192 unsigned short int
193 f29 (unsigned short int x, unsigned int y)
195 return (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1))) ^ (x << y);
198 unsigned short int
199 f30 (unsigned short int x, unsigned long int y)
201 return (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1))) ^ (x << y);
204 unsigned char
205 f31 (unsigned char x, unsigned int y)
207 return (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1))) ^ (x << y);
210 unsigned char
211 f32 (unsigned char x, unsigned long int y)
213 return (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1))) ^ (x << y);
216 unsigned int
217 f33 (unsigned int x, unsigned int y)
219 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
222 unsigned int
223 f34 (unsigned int x, unsigned long int y)
225 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
228 unsigned int
229 f35 (unsigned int x, int y __attribute__((unused)))
231 return (x >> 1) | (x << ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
234 unsigned int
235 f36 (unsigned int x, int y __attribute__((unused)))
237 return (x >> ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) | (x << 1);
240 unsigned short int
241 f37 (unsigned short int x, unsigned int y)
243 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
244 __builtin_unreachable ();
245 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1)));
248 unsigned short int
249 f38 (unsigned short int x, unsigned long int y)
251 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
252 __builtin_unreachable ();
253 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1)));
256 unsigned char
257 f39 (unsigned char x, unsigned int y)
259 if (y >= __CHAR_BIT__)
260 __builtin_unreachable ();
261 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ - 1)));
264 unsigned char
265 f40 (unsigned char x, unsigned long int y)
267 if (y >= __CHAR_BIT__)
268 __builtin_unreachable ();
269 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ - 1)));
272 unsigned int
273 f41 (unsigned int x, unsigned int y)
275 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
278 unsigned int
279 f42 (unsigned int x, unsigned long int y)
281 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
284 unsigned int
285 f43 (unsigned int x, int y __attribute__((unused)))
287 return (x >> 1) | (x << ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
290 unsigned int
291 f44 (unsigned int x, int y __attribute__((unused)))
293 return (x >> ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) | (x << 1);
296 unsigned short int
297 f45 (unsigned short int x, unsigned int y)
299 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
300 __builtin_unreachable ();
301 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1)));
304 unsigned short int
305 f46 (unsigned short int x, unsigned long int y)
307 if (y >= __CHAR_BIT__ * __SIZEOF_SHORT__)
308 __builtin_unreachable ();
309 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1)));
312 unsigned char
313 f47 (unsigned char x, unsigned int y)
315 if (y >= __CHAR_BIT__)
316 __builtin_unreachable ();
317 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1)));
320 unsigned char
321 f48 (unsigned char x, unsigned long int y)
323 if (y >= __CHAR_BIT__)
324 __builtin_unreachable ();
325 return (x >> y) | (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1)));
328 unsigned int
329 f49 (unsigned int x, unsigned int y)
331 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) ^ (x >> y);
334 unsigned int
335 f50 (unsigned int x, unsigned long int y)
337 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) ^ (x >> y);
340 unsigned int
341 f51 (unsigned int x, int y __attribute__((unused)))
343 return (x << ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) ^ (x >> 1);
346 unsigned int
347 f52 (unsigned int x, int y __attribute__((unused)))
349 return (x << 1) ^ (x >> ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
352 unsigned short int
353 f53 (unsigned short int x, unsigned int y)
355 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1))) ^ (x >> y);
358 unsigned short int
359 f54 (unsigned short int x, unsigned long int y)
361 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1))) ^ (x >> y);
364 unsigned char
365 f55 (unsigned char x, unsigned int y)
367 return (x << ((-y) & (__CHAR_BIT__ - 1))) ^ (x >> y);
370 unsigned char
371 f56 (unsigned char x, unsigned long int y)
373 return (x << ((-y) & (__CHAR_BIT__ - 1))) ^ (x >> y);
376 unsigned int
377 f57 (unsigned int x, unsigned int y)
379 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) ^ (x >> y);
382 unsigned int
383 f58 (unsigned int x, unsigned long int y)
385 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) ^ (x >> y);
388 unsigned int
389 f59 (unsigned int x, int y __attribute__((unused)))
391 return (x << ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) ^ (x >> 1);
394 unsigned int
395 f60 (unsigned int x, int y __attribute__((unused)))
397 return (x << 1) ^ (x >> ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
400 unsigned short int
401 f61 (unsigned short int x, unsigned int y)
403 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1))) ^ (x >> y);
406 unsigned short int
407 f62 (unsigned short int x, unsigned long int y)
409 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1))) ^ (x >> y);
412 unsigned char
413 f63 (unsigned char x, unsigned int y)
415 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1))) ^ (x >> y);
418 unsigned char
419 f64 (unsigned char x, unsigned long int y)
421 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1))) ^ (x >> y);
424 unsigned int
425 f65 (unsigned int x, unsigned int y)
427 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
430 unsigned int
431 f66 (unsigned int x, unsigned long int y)
433 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
436 unsigned int
437 f67 (unsigned int x, int y __attribute__((unused)))
439 return (x << 1) + (x >> ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
442 unsigned int
443 f68 (unsigned int x, int y __attribute__((unused)))
445 return (x << ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) + (x >> 1);
448 unsigned short int
449 f69 (unsigned short int x, unsigned int y)
451 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1)));
454 unsigned short int
455 f70 (unsigned short int x, unsigned long int y)
457 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1)));
460 unsigned char
461 f71 (unsigned char x, unsigned int y)
463 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ - 1)));
466 unsigned char
467 f72 (unsigned char x, unsigned long int y)
469 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ - 1)));
472 unsigned int
473 f73 (unsigned int x, unsigned int y)
475 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
478 unsigned int
479 f74 (unsigned int x, unsigned long int y)
481 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
484 unsigned int
485 f75 (unsigned int x, int y __attribute__((unused)))
487 return (x << 1) + (x >> ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
490 unsigned int
491 f76 (unsigned int x, int y __attribute__((unused)))
493 return (x << ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + (x >> 1);
496 unsigned short int
497 f77 (unsigned short int x, unsigned int y)
499 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1)));
502 unsigned short int
503 f78 (unsigned short int x, unsigned long int y)
505 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1)));
508 unsigned char
509 f79 (unsigned char x, unsigned int y)
511 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1)));
514 unsigned char
515 f80 (unsigned char x, unsigned long int y)
517 return (x << y) + (x >> ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1)));
520 unsigned int
521 f81 (unsigned int x, unsigned int y)
523 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) + (x >> y);
526 unsigned int
527 f82 (unsigned int x, unsigned long int y)
529 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) + (x >> y);
532 unsigned int
533 f83 (unsigned int x, int y __attribute__((unused)))
535 return (x << ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1))) + (x >> 1);
538 unsigned int
539 f84 (unsigned int x, int y __attribute__((unused)))
541 return (x << 1) + (x >> ((-1) & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
544 unsigned short int
545 f85 (unsigned short int x, unsigned int y)
547 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1))) + (x >> y);
550 unsigned short int
551 f86 (unsigned short int x, unsigned long int y)
553 return (x << ((-y) & (__CHAR_BIT__ * __SIZEOF_SHORT__ - 1))) + (x >> y);
556 unsigned char
557 f87 (unsigned char x, unsigned int y)
559 return (x << ((-y) & (__CHAR_BIT__ - 1))) + (x >> y);
562 unsigned char
563 f88 (unsigned char x, unsigned long int y)
565 return (x << ((-y) & (__CHAR_BIT__ - 1))) + (x >> y);
568 unsigned int
569 f89 (unsigned int x, unsigned int y)
571 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + (x >> y);
574 unsigned int
575 f90 (unsigned int x, unsigned long int y)
577 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + (x >> y);
580 unsigned int
581 f91 (unsigned int x, int y __attribute__((unused)))
583 return (x << ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1))) + (x >> 1);
586 unsigned int
587 f92 (unsigned int x, int y __attribute__((unused)))
589 return (x << 1) + (x >> ((-1) & (__CHAR_BIT__ * sizeof (unsigned int) - 1)));
592 unsigned short int
593 f93 (unsigned short int x, unsigned int y)
595 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1))) + (x >> y);
598 unsigned short int
599 f94 (unsigned short int x, unsigned long int y)
601 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned short) - 1))) + (x >> y);
604 unsigned char
605 f95 (unsigned char x, unsigned int y)
607 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1))) + (x >> y);
610 unsigned char
611 f96 (unsigned char x, unsigned long int y)
613 return (x << ((-y) & (__CHAR_BIT__ * sizeof (unsigned char) - 1))) + (x >> y);