; RUN: opt -passes="default<O1>" %s -S | FileCheck %s ; REQUIRES: asserts declare void @bar() declare void @baz(i32*) ; CHECK-LABEL: @foo1() define void @foo1() { entry: %tag = alloca i32, align 4 call void @baz(i32* %tag) %tmp = load i32, i32* %tag, align 4 switch i32 %tmp, label %sw.bb799 [ i32 10, label %sw.bb239 ] sw.bb239: call void @foo2() br label %cleanup871 sw.bb799: call void @foo3(i32 undef) br label %cleanup871 cleanup871: call void @bar() unreachable } define void @foo2() { call void @foo4() unreachable } define void @foo3(i32 %ptr) { call void @foo1() unreachable } define void @foo4() { entry: %tag = alloca i32, align 4 call void @baz(i32* %tag) %tmp = load i32, i32* %tag, align 4 switch i32 %tmp, label %sw.bb442 [ i32 16, label %sw.bb352 ] sw.bb352: call void @foo3(i32 undef) unreachable sw.bb442: call void @foo2() unreachable }