Skip to content

Commit de127d8

Browse files
committed
[InstCombine] Add tests for PR48577 (NFC)
1 parent fc41777 commit de127d8

File tree

2 files changed

+32
-11
lines changed

2 files changed

+32
-11
lines changed

llvm/test/Transforms/InstCombine/load.ll

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,23 @@ define i32 @test5(i1 %C) {
5757
ret i32 %Z
5858
}
5959

60-
define i32 @test7(i32 %X) {
61-
; CHECK-LABEL: @test7(
60+
define i32 @load_gep_null_inbounds(i64 %X) {
61+
; CHECK-LABEL: @load_gep_null_inbounds(
6262
; CHECK-NEXT: store i32 undef, i32* null, align 536870912
6363
; CHECK-NEXT: ret i32 undef
6464
;
65-
%V = getelementptr i32, i32* null, i32 %X ; <i32*> [#uses=1]
66-
%R = load i32, i32* %V ; <i32> [#uses=1]
65+
%V = getelementptr inbounds i32, i32* null, i64 %X
66+
%R = load i32, i32* %V
67+
ret i32 %R
68+
}
69+
70+
define i32 @load_gep_null_not_inbounds(i64 %X) {
71+
; CHECK-LABEL: @load_gep_null_not_inbounds(
72+
; CHECK-NEXT: store i32 undef, i32* null, align 536870912
73+
; CHECK-NEXT: ret i32 undef
74+
;
75+
%V = getelementptr i32, i32* null, i64 %X
76+
%R = load i32, i32* %V
6777
ret i32 %R
6878
}
6979

llvm/test/Transforms/InstCombine/store.ll

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,19 @@ define void @test2(i32* %P) {
2323
ret void
2424
}
2525

26-
define void @store_at_gep_off_null(i64 %offset) {
27-
; CHECK-LABEL: @store_at_gep_off_null(
26+
define void @store_at_gep_off_null_inbounds(i64 %offset) {
27+
; CHECK-LABEL: @store_at_gep_off_null_inbounds(
28+
; CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, i32* null, i64 [[OFFSET:%.*]]
29+
; CHECK-NEXT: store i32 undef, i32* [[PTR]], align 4
30+
; CHECK-NEXT: ret void
31+
;
32+
%ptr = getelementptr inbounds i32, i32 *null, i64 %offset
33+
store i32 24, i32* %ptr
34+
ret void
35+
}
36+
37+
define void @store_at_gep_off_null_not_inbounds(i64 %offset) {
38+
; CHECK-LABEL: @store_at_gep_off_null_not_inbounds(
2839
; CHECK-NEXT: [[PTR:%.*]] = getelementptr i32, i32* null, i64 [[OFFSET:%.*]]
2940
; CHECK-NEXT: store i32 undef, i32* [[PTR]], align 4
3041
; CHECK-NEXT: ret void
@@ -36,11 +47,11 @@ define void @store_at_gep_off_null(i64 %offset) {
3647

3748
define void @store_at_gep_off_no_null_opt(i64 %offset) #0 {
3849
; CHECK-LABEL: @store_at_gep_off_no_null_opt(
39-
; CHECK-NEXT: [[PTR:%.*]] = getelementptr i32, i32* null, i64 [[OFFSET:%.*]]
50+
; CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, i32* null, i64 [[OFFSET:%.*]]
4051
; CHECK-NEXT: store i32 24, i32* [[PTR]], align 4
4152
; CHECK-NEXT: ret void
4253
;
43-
%ptr = getelementptr i32, i32 *null, i64 %offset
54+
%ptr = getelementptr inbounds i32, i32 *null, i64 %offset
4455
store i32 24, i32* %ptr
4556
ret void
4657
}
@@ -130,14 +141,14 @@ define void @test6(i32 %n, float* %a, i32* %gi) nounwind uwtable ssp {
130141
; CHECK-NEXT: br label [[FOR_COND:%.*]]
131142
; CHECK: for.cond:
132143
; CHECK-NEXT: [[STOREMERGE:%.*]] = phi i32 [ 42, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_BODY:%.*]] ]
133-
; CHECK-NEXT: store i32 [[STOREMERGE]], i32* [[GI:%.*]], align 4, !tbaa !0
144+
; CHECK-NEXT: store i32 [[STOREMERGE]], i32* [[GI:%.*]], align 4, [[TBAA0:!tbaa !.*]]
134145
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[STOREMERGE]], [[N:%.*]]
135146
; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_END:%.*]]
136147
; CHECK: for.body:
137148
; CHECK-NEXT: [[IDXPROM:%.*]] = sext i32 [[STOREMERGE]] to i64
138149
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds float, float* [[A:%.*]], i64 [[IDXPROM]]
139-
; CHECK-NEXT: store float 0.000000e+00, float* [[ARRAYIDX]], align 4, !tbaa !4
140-
; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[GI]], align 4, !tbaa !0
150+
; CHECK-NEXT: store float 0.000000e+00, float* [[ARRAYIDX]], align 4, [[TBAA4:!tbaa !.*]]
151+
; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[GI]], align 4, [[TBAA0]]
141152
; CHECK-NEXT: [[INC]] = add nsw i32 [[TMP0]], 1
142153
; CHECK-NEXT: br label [[FOR_COND]]
143154
; CHECK: for.end:

0 commit comments

Comments
 (0)