@@ -238,7 +238,7 @@ else:
238238}
239239
240240declare ptr @fn_nonnull_noundef_arg (ptr nonnull noundef %p )
241- declare ptr @fn_nonnull_deref_arg (ptr nonnull dereferenceable (4 ) %p )
241+ declare ptr @fn_deref_arg (ptr dereferenceable (4 ) %p )
242242declare ptr @fn_nonnull_deref_or_null_arg (ptr nonnull dereferenceable_or_null (4 ) %p )
243243declare ptr @fn_nonnull_arg (ptr nonnull %p )
244244declare ptr @fn_noundef_arg (ptr noundef %p )
@@ -271,7 +271,7 @@ define void @test9_deref(i1 %X, ptr %Y) {
271271; CHECK-NEXT: entry:
272272; CHECK-NEXT: [[TMP0:%.*]] = xor i1 [[X:%.*]], true
273273; CHECK-NEXT: call void @llvm.assume(i1 [[TMP0]])
274- ; CHECK-NEXT: [[TMP1:%.*]] = call ptr @fn_nonnull_deref_arg (ptr [[Y:%.*]])
274+ ; CHECK-NEXT: [[TMP1:%.*]] = call ptr @fn_deref_arg (ptr [[Y:%.*]])
275275; CHECK-NEXT: ret void
276276;
277277entry:
@@ -282,17 +282,16 @@ if:
282282
283283else:
284284 %phi = phi ptr [ %Y , %entry ], [ null , %if ]
285- call ptr @fn_nonnull_deref_arg (ptr %phi )
285+ call ptr @fn_deref_arg (ptr %phi )
286286 ret void
287287}
288288
289289; Optimizing this code should produce assume.
290290define void @test9_deref_or_null (i1 %X , ptr %Y ) {
291291; CHECK-LABEL: @test9_deref_or_null(
292292; CHECK-NEXT: entry:
293- ; CHECK-NEXT: [[TMP0:%.*]] = xor i1 [[X:%.*]], true
294- ; CHECK-NEXT: call void @llvm.assume(i1 [[TMP0]])
295- ; CHECK-NEXT: [[TMP1:%.*]] = call ptr @fn_nonnull_deref_or_null_arg(ptr [[Y:%.*]])
293+ ; CHECK-NEXT: [[Y:%.*]] = select i1 [[X:%.*]], ptr null, ptr [[Y1:%.*]]
294+ ; CHECK-NEXT: [[TMP1:%.*]] = call ptr @fn_nonnull_deref_or_null_arg(ptr [[Y]])
296295; CHECK-NEXT: ret void
297296;
298297entry:
0 commit comments