58 lines · plain
1; RUN: opt -passes="default<O1>" %s -S | FileCheck %s2; REQUIRES: asserts3 4declare void @bar()5declare void @baz(ptr)6 7; CHECK-LABEL: @foo1()8define void @foo1() {9entry:10 %tag = alloca i32, align 411 call void @baz(ptr %tag)12 %tmp = load i32, ptr %tag, align 413 switch i32 %tmp, label %sw.bb799 [14 i32 10, label %sw.bb23915 ]16 17sw.bb239:18 call void @foo2()19 br label %cleanup87120 21sw.bb799:22 call void @foo3(i32 undef)23 br label %cleanup87124 25cleanup871:26 call void @bar()27 unreachable28}29 30define void @foo2() {31 call void @foo4()32 unreachable33}34 35define void @foo3(i32 %ptr) {36 call void @foo1()37 unreachable38}39 40define void @foo4() {41entry:42 %tag = alloca i32, align 443 call void @baz(ptr %tag)44 %tmp = load i32, ptr %tag, align 445 switch i32 %tmp, label %sw.bb442 [46 i32 16, label %sw.bb35247 ]48 49sw.bb352:50 call void @foo3(i32 undef)51 unreachable52 53sw.bb442:54 call void @foo2()55 unreachable56}57 58