@@ -51,7 +51,7 @@ define void @test_inbounds_program_not_ub_if_first_gep_poison(ptr %ptr, i64 %n)
51
51
52
52
define void @load_both_nonnull (ptr %p ) {
53
53
; CHECK-LABEL: @load_both_nonnull(
54
- ; CHECK-NEXT: [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull !0
54
+ ; CHECK-NEXT: [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull [[META0:![0-9]+]]
55
55
; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
56
56
; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
57
57
; CHECK-NEXT: ret void
@@ -79,7 +79,7 @@ define void @load_first_nonnull(ptr %p) {
79
79
80
80
define void @load_first_nonnull_noundef (ptr %p ) {
81
81
; CHECK-LABEL: @load_first_nonnull_noundef(
82
- ; CHECK-NEXT: [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull !0 , !noundef !0
82
+ ; CHECK-NEXT: [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull [[META0]] , !noundef [[META0]]
83
83
; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
84
84
; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
85
85
; CHECK-NEXT: ret void
@@ -93,7 +93,7 @@ define void @load_first_nonnull_noundef(ptr %p) {
93
93
94
94
define ptr @store_to_load_forward (ptr %p , ptr %p2 ) {
95
95
; CHECK-LABEL: @store_to_load_forward(
96
- ; CHECK-NEXT: [[P3:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull !0
96
+ ; CHECK-NEXT: [[P3:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull [[META0]]
97
97
; CHECK-NEXT: store ptr [[P3]], ptr [[P2:%.*]], align 8
98
98
; CHECK-NEXT: ret ptr [[P3]]
99
99
;
@@ -102,3 +102,13 @@ define ptr @store_to_load_forward(ptr %p, ptr %p2) {
102
102
%res = load ptr , ptr %p2
103
103
ret ptr %res
104
104
}
105
+
106
+ define i32 @load_undef_noundef (ptr %p ) {
107
+ ; CHECK-LABEL: @load_undef_noundef(
108
+ ; CHECK-NEXT: store i32 undef, ptr [[P:%.*]], align 4
109
+ ; CHECK-NEXT: ret i32 undef
110
+ ;
111
+ store i32 undef , ptr %p
112
+ %v = load i32 , ptr %p , !noundef !{}
113
+ ret i32 %v
114
+ }
0 commit comments