; RUN: opt < %s -lowerswitch -S | FileCheck %s ; This test verifies -lowerswitch does not crash when an removing an ; unreachable default branch causes a PHI node used as the switch ; condition to be erased. define void @f() local_unnamed_addr { entry: br label %sw.epilog sw.epilog: ; preds = %sw.epilog.outer, %for.body %i = phi i32 [ undef, %for.body ], [ 0, %entry ] br i1 undef, label %for.body, label %for.end for.body: ; preds = %sw.epilog switch i32 %i, label %sw.epilog [ i32 0, label %sw.epilog.outer.backedge.loopexit i32 1, label %sw.epilog.outer.backedge ] sw.epilog.outer.backedge.loopexit: ; preds = %for.body br label %for.end sw.epilog.outer.backedge: ; preds = %for.body unreachable for.end: ; preds = %sw.epilog ret void } ; The phi and the switch should both be eliminated. ; CHECK: @f() ; CHECK: sw.epilog: ; CHECK-NOT: phi ; CHECK: for.body: ; CHECK-NOT: switch