Skip to content

Commit f3d90da

Browse files
committed
avoid load from null ptr
1 parent 753b063 commit f3d90da

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

llvm/test/Transforms/Inline/always-inline-bfi.ll

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33

44
; Make sure this does not crash.
55

6-
define void @f_116_0() alwaysinline {
6+
define void @f_116_0(ptr %p) alwaysinline {
77
; CHECK-LABEL: define void @f_116_0(
8-
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
8+
; CHECK-SAME: ptr [[P:%.*]]) #[[ATTR0:[0-9]+]] {
99
; CHECK-NEXT: [[ENTRY:.*:]]
10-
; CHECK-NEXT: [[DOTPRE:%.*]] = load i16, ptr null, align 1
10+
; CHECK-NEXT: [[DOTPRE:%.*]] = load i16, ptr [[P]], align 1
1111
; CHECK-NEXT: br label %[[FOR_COND:.*]]
1212
; CHECK: [[FOR_COND]]:
1313
; CHECK-NEXT: [[CMP3:%.*]] = icmp ult i16 [[DOTPRE]], 1
@@ -18,7 +18,7 @@ define void @f_116_0() alwaysinline {
1818
; CHECK-NEXT: br label %[[FOR_COND]]
1919
;
2020
entry:
21-
%.pre = load i16, ptr null, align 1
21+
%.pre = load i16, ptr %p, align 1
2222
br label %for.cond
2323

2424
for.cond: ; preds = %for.body, %entry
@@ -32,17 +32,17 @@ for.body: ; preds = %for.cond
3232
br label %for.cond
3333
}
3434

35-
define void @f_321_0() alwaysinline {
35+
define void @f_321_0(ptr %p) alwaysinline {
3636
; CHECK-LABEL: define void @f_321_0(
37-
; CHECK-SAME: ) #[[ATTR0]] {
37+
; CHECK-SAME: ptr [[P:%.*]]) #[[ATTR0]] {
3838
; CHECK-NEXT: [[ENTRY:.*:]]
3939
; CHECK-NEXT: br label %[[FOR_COND:.*]]
4040
; CHECK: [[FOR_COND]]:
4141
; CHECK-NEXT: br i1 false, label %[[CRIT_EDGE:.*]], label %[[FOR_COND_CLEANUP:.*]]
4242
; CHECK: [[CRIT_EDGE]]:
4343
; CHECK-NEXT: unreachable
4444
; CHECK: [[FOR_COND_CLEANUP]]:
45-
; CHECK-NEXT: [[DOTPRE_I:%.*]] = load i16, ptr null, align 1
45+
; CHECK-NEXT: [[DOTPRE_I:%.*]] = load i16, ptr [[P]], align 1
4646
; CHECK-NEXT: br label %[[FOR_COND_I:.*]]
4747
; CHECK: [[FOR_COND_I]]:
4848
; CHECK-NEXT: [[CMP3_I:%.*]] = icmp ult i16 [[DOTPRE_I]], 1
@@ -62,18 +62,19 @@ crit_edge: ; preds = %for.cond
6262
br label %for.cond
6363

6464
for.cond.cleanup: ; preds = %for.cond
65-
call void @f_116_0()
65+
call void @f_116_0(ptr %p)
6666
ret void
6767
}
6868

69-
define i16 @main() {
70-
; CHECK-LABEL: define i16 @main() {
69+
define i16 @main(ptr %p) {
70+
; CHECK-LABEL: define i16 @main(
71+
; CHECK-SAME: ptr [[P:%.*]]) {
7172
; CHECK-NEXT: [[ENTRY:.*:]]
7273
; CHECK-NEXT: br label %[[FOR_COND:.*]]
7374
; CHECK: [[FOR_COND]]:
7475
; CHECK-NEXT: br label %[[FOR_COND]]
7576
; CHECK: [[IF_ELSE:.*:]]
76-
; CHECK-NEXT: [[DOTPRE_I_I:%.*]] = load i16, ptr null, align 1
77+
; CHECK-NEXT: [[DOTPRE_I_I:%.*]] = load i16, ptr [[P]], align 1
7778
; CHECK-NEXT: br label %[[FOR_COND_I_I:.*]]
7879
; CHECK: [[FOR_COND_I_I]]:
7980
; CHECK-NEXT: [[CMP3_I_I:%.*]] = icmp ult i16 [[DOTPRE_I_I]], 1
@@ -92,7 +93,7 @@ for.cond: ; preds = %for.cond, %entry
9293
br label %for.cond
9394

9495
if.else: ; No predecessors!
95-
call void @f_321_0()
96+
call void @f_321_0(ptr %p)
9697
br label %for.cond115
9798

9899
for.cond115: ; preds = %for.cond115, %if.else

0 commit comments

Comments
 (0)