1
1
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2
- ; RUN: opt -p instcombine -S %s | FileCheck %s
2
+ ; RUN: opt -p instsimplify -S %s | FileCheck %s
3
3
4
4
@glob = external global [314 x i64 ]
5
5
6
6
define i1 @known_constexpr_add_eq () {
7
7
; CHECK-LABEL: define i1 @known_constexpr_add_eq() {
8
- ; CHECK-NEXT: [[COND:%.*]] = icmp eq ptr getelementptr inbounds nuw (i8, ptr @glob, i64 80), inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64), i64 -80) to ptr)
9
- ; CHECK-NEXT: ret i1 [[COND]]
8
+ ; CHECK-NEXT: ret i1 false
10
9
;
11
10
%cond = icmp eq ptr getelementptr inbounds nuw (i8 , ptr @glob , i64 80 ), inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64 ), i64 -80 ) to ptr )
12
11
ret i1 %cond
13
12
}
14
13
15
14
define i1 @known_constexpr_add_eq_ops_swapped () {
16
15
; CHECK-LABEL: define i1 @known_constexpr_add_eq_ops_swapped() {
17
- ; CHECK-NEXT: [[COND:%.*]] = icmp eq ptr getelementptr inbounds nuw (i8, ptr @glob, i64 80), inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64), i64 -80) to ptr)
18
- ; CHECK-NEXT: ret i1 [[COND]]
16
+ ; CHECK-NEXT: ret i1 false
19
17
;
20
- %cond = icmp eq ptr getelementptr inbounds nuw ( i8 , ptr @glob , i64 80 ), inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64 ), i64 -80 ) to ptr )
18
+ %cond = icmp eq ptr inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64 ), i64 -80 ) to ptr ), getelementptr inbounds nuw ( i8 , ptr @glob , i64 80 )
21
19
ret i1 %cond
22
20
}
23
21
24
22
define i1 @known_constexpr_add_ne () {
25
23
; CHECK-LABEL: define i1 @known_constexpr_add_ne() {
26
- ; CHECK-NEXT: [[COND:%.*]] = icmp ne ptr getelementptr inbounds nuw (i8, ptr @glob, i64 80), inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64), i64 -80) to ptr)
27
- ; CHECK-NEXT: ret i1 [[COND]]
24
+ ; CHECK-NEXT: ret i1 true
28
25
;
29
26
%cond = icmp ne ptr getelementptr inbounds nuw (i8 , ptr @glob , i64 80 ), inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64 ), i64 -80 ) to ptr )
30
27
ret i1 %cond
@@ -41,8 +38,7 @@ define i1 @wrap_positive_to_negate() {
41
38
; 9223372036854775808 = 2^63
42
39
define i1 @wrap_positive_to_zero () {
43
40
; CHECK-LABEL: define i1 @wrap_positive_to_zero() {
44
- ; CHECK-NEXT: [[COND:%.*]] = icmp eq ptr @glob, inttoptr (i64 add (i64 ptrtoint (ptr getelementptr nuw (i8, ptr @glob, i64 -9223372036854775808) to i64), i64 -9223372036854775808) to ptr)
45
- ; CHECK-NEXT: ret i1 [[COND]]
41
+ ; CHECK-NEXT: ret i1 true
46
42
;
47
43
%cond = icmp eq ptr @glob , inttoptr (i64 add (i64 ptrtoint (ptr getelementptr nuw (i8 , ptr @glob , i64 9223372036854775808 )to i64 ), i64 9223372036854775808 ) to ptr )
48
44
ret i1 %cond
@@ -99,3 +95,20 @@ define ptr @return_inttoptr() {
99
95
;
100
96
ret ptr inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64 ), i64 8 ) to ptr )
101
97
}
98
+
99
+ define i1 @known_constexpr_add_nested_1 () {
100
+ ; CHECK-LABEL: define i1 @known_constexpr_add_nested_1() {
101
+ ; CHECK-NEXT: ret i1 true
102
+ ;
103
+ %cond = icmp eq ptr @glob , inttoptr (i64 add (i64 ptrtoint (ptr getelementptr inbounds nuw (i8 , ptr @glob , i64 80 ) to i64 ), i64 -80 ) to ptr )
104
+ ret i1 %cond
105
+ }
106
+
107
+ define i1 @known_constexpr_add_nested_2 () {
108
+ ; CHECK-LABEL: define i1 @known_constexpr_add_nested_2() {
109
+ ; CHECK-NEXT: ret i1 true
110
+ ;
111
+ ;%cond = icmp eq ptr @glob, ptr getelementptr inbounds nuw (i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64), i64 -80) to ptr), i64 80)
112
+ %cond = icmp eq ptr @glob , getelementptr inbounds nuw (i8 , ptr inttoptr (i64 add (i64 ptrtoint (ptr @glob to i64 ), i64 -80 ) to ptr ), i64 80 )
113
+ ret i1 %cond
114
+ }
0 commit comments