; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -passes="ipsccp" -S < %s | FileCheck %s %mystruct = type { i32, [2 x i64] } define internal ptr @myfunc(ptr %arg) { ; CHECK-LABEL: @myfunc( ; CHECK-NEXT: entry: ; CHECK-NEXT: br label [[FOR_COND:%.*]] ; CHECK: for.cond: ; CHECK-NEXT: br label [[FOR_COND2:%.*]] ; CHECK: for.cond2: ; CHECK-NEXT: br label [[FOR_BODY2:%.*]] ; CHECK: for.body2: ; CHECK-NEXT: br label [[FOR_COND2]] ; entry: br label %for.cond for.cond: ; preds = %for.body, %entry %phi = phi ptr [ undef, %for.body ], [ null, %entry ] %cond = icmp eq ptr %phi, null br i1 %cond, label %for.cond2, label %for.body for.body: ; preds = %for.cond call void @callee(ptr nonnull %phi) br label %for.cond for.cond2: ; preds = %for.body2, %for.cond %phi2 = phi ptr [ undef, %for.body2 ], [ null, %for.cond ] br i1 false, label %for.end, label %for.body2 for.body2: ; preds = %for.cond2 %arrayidx = getelementptr inbounds %mystruct, ptr %phi2, i64 0, i32 1, i64 3 br label %for.cond2 for.end: ; preds = %for.cond2 ret ptr %arg } define ptr @caller() { ; CHECK-LABEL: @caller( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[CALL:%.*]] = call ptr @myfunc(ptr undef) ; CHECK-NEXT: ret ptr undef ; entry: %call = call ptr @myfunc(ptr undef) ret ptr %call } declare void @callee(ptr)