1 /* PR tree-optimization/99079 */
2 /* { dg-do compile { target { lp64 || ilp32 } } } */
3 /* { dg-options "-O2 -fdump-tree-optimized" } */
4
5 unsigned int
6 foo1 (unsigned int a, unsigned int b)
7 {
8 return a % (1 << b);
9 }
10
11 int
12 foo2 (int b)
13 {
14 return 371 % (1U << b);
15 }
16
17 long long
18 foo3 (int b)
19 {
20 return 371LL % (1U << b);
21 }
22
23 unsigned long long
24 foo4 (unsigned long long a, int b)
25 {
26 return a % (1U << b);
27 }
28
29 unsigned
30 foo5 (unsigned a, int b)
31 {
32 return a % (unsigned) (1ULL << b);
33 }
34
35 int
36 foo6 (int b)
37 {
38 return 371 % (int) (1ULL << b);
39 }
40
41 long long
42 foo7 (int b)
43 {
44 return 371LL % (1 << b);
45 }
46
47 /* { dg-final { scan-tree-dump-not " % " "optimized" } } */