comparison gcc/testsuite/gcc.dg/fold-notshift-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* PR tree-optimization/54579
2 PR middle-end/55299 */
3
4 /* { dg-do compile } */
5 /* { dg-options "-O -fdump-tree-cddce1" } */
6
7 int
8 asr1 (int a, int b)
9 {
10 return ~((~a) >> b);
11 }
12
13 long
14 asr1l (long a, long b)
15 {
16 return ~((~a) >> b);
17 }
18
19 int
20 asr_conv (unsigned a, unsigned b)
21 {
22 return ~((int)~a >> b);
23 }
24
25 unsigned
26 asr_conv2 (unsigned a, unsigned b)
27 {
28 return ~(unsigned)((int)~a >> b);
29 }
30
31 unsigned
32 asr_conv3 (int a, int b)
33 {
34 return ~(unsigned)(~a >> b);
35 }
36
37 typedef __INT32_TYPE__ int32_t;
38 typedef __INT64_TYPE__ int64_t;
39
40 int32_t
41 asr_conv4 (int64_t a, int b)
42 {
43 return ~((int32_t)~a >> b);
44 }
45
46 int32_t
47 asr_conv5 (int64_t a, int b)
48 {
49 return ~(int32_t)(~a >> b);
50 }
51
52 int
53 asr2 (int a, int b)
54 {
55 return -((-a - 1) >> b) - 1;
56 }
57
58 int
59 asr3 (int a, int b)
60 {
61 return a < 0 ? ~((~a) >> b) : a >> b;
62 }
63
64 int64_t
65 asr3l (int64_t a, int b)
66 {
67 return a < 0 ? ~((~a) >> b) : a >> b;
68 }
69
70 int
71 asr4 (int a, int b)
72 {
73 return a < 0 ? -((-a - 1) >> b) - 1 : a >> b;
74 }
75
76 /* { dg-final { scan-tree-dump-times ">>" 11 "cddce1" } } */
77 /* { dg-final { scan-tree-dump-not "~" "cddce1" } } */