1 /* PR middle-end/55299 */
2
3 /* { dg-do compile } */
4 /* { dg-options "-O -fdump-tree-cddce1" } */
5
6 unsigned int
7 lsr (unsigned int a, unsigned int b)
8 {
9 return ~((~a) >> b);
10 }
11
12 int
13 sl (int a, int b)
14 {
15 return ~((~a) << b);
16 }
17
18 typedef unsigned __INT32_TYPE__ uint32_t;
19 typedef __INT64_TYPE__ int64_t;
20
21 int64_t
22 asr_widen1 (uint32_t a, int b)
23 {
24 return ~((int64_t)(~a) >> b);
25 }
26
27 int64_t
28 asr_widen2 (uint32_t a, int b)
29 {
30 return ~(int64_t)(~a >> b);
31 }
32
33 /* { dg-final { scan-tree-dump-times "~" 8 "cddce1" } } */