@@ -11,9 +11,7 @@ define ptr @test_zero(ptr %base, i64 %a) {
11
11
; CHECK-LABEL: define ptr @test_zero(
12
12
; CHECK-SAME: ptr [[BASE:%.*]], i64 [[A:%.*]]) {
13
13
; CHECK-NEXT: entry:
14
- ; CHECK-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[BASE]], i64 -4
15
- ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[P1]], i64 [[A]]
16
- ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[TMP0]], i64 1
14
+ ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[BASE]], i64 [[A]]
17
15
; CHECK-NEXT: ret ptr [[P2]]
18
16
;
19
17
entry:
@@ -27,9 +25,8 @@ define ptr @test_nonzero(ptr %base, i64 %a) {
27
25
; CHECK-LABEL: define ptr @test_nonzero(
28
26
; CHECK-SAME: ptr [[BASE:%.*]], i64 [[A:%.*]]) {
29
27
; CHECK-NEXT: entry:
30
- ; CHECK-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[BASE]], i64 -4
31
- ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[P1]], i64 [[A]]
32
- ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[TMP0]], i64 2
28
+ ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i8, ptr [[BASE]], i64 4
29
+ ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[TMP0]], i64 [[A]]
33
30
; CHECK-NEXT: ret ptr [[P2]]
34
31
;
35
32
entry:
@@ -43,9 +40,7 @@ define ptr @test_or_disjoint(ptr %base, i64 %a) {
43
40
; CHECK-LABEL: define ptr @test_or_disjoint(
44
41
; CHECK-SAME: ptr [[BASE:%.*]], i64 [[A:%.*]]) {
45
42
; CHECK-NEXT: entry:
46
- ; CHECK-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[BASE]], i64 -4
47
- ; CHECK-NEXT: [[INDEX:%.*]] = or disjoint i64 [[A]], 1
48
- ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[P1]], i64 [[INDEX]]
43
+ ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[BASE]], i64 [[A]]
49
44
; CHECK-NEXT: ret ptr [[P2]]
50
45
;
51
46
entry:
@@ -59,10 +54,9 @@ define ptr @test_zero_multiuse_index(ptr %base, i64 %a) {
59
54
; CHECK-LABEL: define ptr @test_zero_multiuse_index(
60
55
; CHECK-SAME: ptr [[BASE:%.*]], i64 [[A:%.*]]) {
61
56
; CHECK-NEXT: entry:
62
- ; CHECK-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[BASE]], i64 -4
63
57
; CHECK-NEXT: [[INDEX:%.*]] = add i64 [[A]], 1
64
58
; CHECK-NEXT: call void @use64(i64 [[INDEX]])
65
- ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[P1 ]], i64 [[INDEX ]]
59
+ ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[BASE ]], i64 [[A ]]
66
60
; CHECK-NEXT: ret ptr [[P2]]
67
61
;
68
62
entry:
@@ -79,8 +73,7 @@ define ptr @test_zero_multiuse_ptr(ptr %base, i64 %a) {
79
73
; CHECK-NEXT: entry:
80
74
; CHECK-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[BASE]], i64 -4
81
75
; CHECK-NEXT: call void @useptr(ptr [[P1]])
82
- ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[P1]], i64 [[A]]
83
- ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[TMP0]], i64 1
76
+ ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[BASE]], i64 [[A]]
84
77
; CHECK-NEXT: ret ptr [[P2]]
85
78
;
86
79
entry:
@@ -95,10 +88,8 @@ define ptr @test_zero_sext_add_nsw(ptr %base, i32 %a) {
95
88
; CHECK-LABEL: define ptr @test_zero_sext_add_nsw(
96
89
; CHECK-SAME: ptr [[BASE:%.*]], i32 [[A:%.*]]) {
97
90
; CHECK-NEXT: entry:
98
- ; CHECK-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[BASE]], i64 -4
99
91
; CHECK-NEXT: [[TMP0:%.*]] = sext i32 [[A]] to i64
100
- ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[P1]], i64 [[TMP0]]
101
- ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[TMP1]], i64 1
92
+ ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[BASE]], i64 [[TMP0]]
102
93
; CHECK-NEXT: ret ptr [[P2]]
103
94
;
104
95
entry:
@@ -112,10 +103,8 @@ define ptr @test_zero_trunc_add(ptr %base, i128 %a) {
112
103
; CHECK-LABEL: define ptr @test_zero_trunc_add(
113
104
; CHECK-SAME: ptr [[BASE:%.*]], i128 [[A:%.*]]) {
114
105
; CHECK-NEXT: entry:
115
- ; CHECK-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[BASE]], i64 -4
116
106
; CHECK-NEXT: [[TMP0:%.*]] = trunc i128 [[A]] to i64
117
- ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[P1]], i64 [[TMP0]]
118
- ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[TMP1]], i64 1
107
+ ; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr [[BASE]], i64 [[TMP0]]
119
108
; CHECK-NEXT: ret ptr [[P2]]
120
109
;
121
110
entry:
0 commit comments