@@ -140,8 +140,41 @@ fin:
140
140
ret ptr null
141
141
}
142
142
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(
145
178
; CHECK-NEXT: entry:
146
179
; CHECK-NEXT: [[TMP0:%.*]] = icmp ne ptr undef, null
147
180
; CHECK-NEXT: call void @llvm.assume(i1 [[TMP0]])
@@ -153,8 +186,8 @@ entry:
153
186
ret ptr %buf.load
154
187
}
155
188
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 (
158
191
; CHECK-NEXT: entry:
159
192
; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
160
193
; CHECK: if:
0 commit comments