@@ -140,8 +140,41 @@ fin:
140140 ret ptr null
141141}
142142
143- define ptr @no_store_single_load () {
144- ; CHECK-LABEL: @no_store_single_load(
143+ define ptr @no_store_single_load_noundef () {
144+ ; CHECK-LABEL: @no_store_single_load_noundef(
145+ ; CHECK-NEXT: entry:
146+ ; CHECK-NEXT: ret ptr undef
147+ ;
148+ entry:
149+ %buf = alloca ptr
150+ %buf.load = load ptr , ptr %buf , !noundef !0
151+ ret ptr %buf.load
152+ }
153+
154+ define ptr @no_store_multiple_loads_noundef (i1 %c ) {
155+ ; CHECK-LABEL: @no_store_multiple_loads_noundef(
156+ ; CHECK-NEXT: entry:
157+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
158+ ; CHECK: if:
159+ ; CHECK-NEXT: ret ptr undef
160+ ; CHECK: else:
161+ ; CHECK-NEXT: ret ptr undef
162+ ;
163+ entry:
164+ %buf = alloca ptr
165+ br i1 %c , label %if , label %else
166+
167+ if:
168+ %buf.load = load ptr , ptr %buf , !noundef !0
169+ ret ptr %buf.load
170+
171+ else:
172+ %buf.load2 = load ptr , ptr %buf , !noundef !0
173+ ret ptr %buf.load2
174+ }
175+
176+ define ptr @no_store_single_load_nonnull_noundef () {
177+ ; CHECK-LABEL: @no_store_single_load_nonnull_noundef(
145178; CHECK-NEXT: entry:
146179; CHECK-NEXT: [[TMP0:%.*]] = icmp ne ptr undef, null
147180; CHECK-NEXT: call void @llvm.assume(i1 [[TMP0]])
@@ -153,8 +186,8 @@ entry:
153186 ret ptr %buf.load
154187}
155188
156- define ptr @no_store_multiple_loads (i1 %c ) {
157- ; CHECK-LABEL: @no_store_multiple_loads (
189+ define ptr @no_store_multiple_loads_nonnull_noundef (i1 %c ) {
190+ ; CHECK-LABEL: @no_store_multiple_loads_nonnull_noundef (
158191; CHECK-NEXT: entry:
159192; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
160193; CHECK: if:
0 commit comments