@@ -51,7 +51,7 @@ define void @test_inbounds_program_not_ub_if_first_gep_poison(ptr %ptr, i64 %n)
5151
5252define void @load_both_nonnull (ptr %p ) {
5353; 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]+]]
5555; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
5656; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
5757; CHECK-NEXT: ret void
@@ -79,7 +79,7 @@ define void @load_first_nonnull(ptr %p) {
7979
8080define void @load_first_nonnull_noundef (ptr %p ) {
8181; 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]]
8383; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
8484; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
8585; CHECK-NEXT: ret void
@@ -93,7 +93,7 @@ define void @load_first_nonnull_noundef(ptr %p) {
9393
9494define ptr @store_to_load_forward (ptr %p , ptr %p2 ) {
9595; 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]]
9797; CHECK-NEXT: store ptr [[P3]], ptr [[P2:%.*]], align 8
9898; CHECK-NEXT: ret ptr [[P3]]
9999;
@@ -102,3 +102,13 @@ define ptr @store_to_load_forward(ptr %p, ptr %p2) {
102102 %res = load ptr , ptr %p2
103103 ret ptr %res
104104}
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