; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -inline < %s | FileCheck %s ; Check that the exception handling code is fully pruned, and does not ; leave behind invalid IR. define internal void @foo() personality i32 (...)* undef { entry: br i1 false, label %join, label %split split: br label %join join: %phi = phi i64 [ 1, %split ], [ 0, %entry ] %cmp = icmp ugt i64 1, %phi br i1 %cmp, label %invoke1, label %exit invoke1: invoke void undef() to label %exit unwind label %cleanup1 cleanup1: %pad1 = cleanuppad within none [] br label %cleanup1.cont cleanup1.cont: br i1 undef, label %cleanupret, label %invoke2 invoke2: invoke void undef() [ "funclet"(token %pad1) ] to label %cleanup1.cont unwind label %cleanup2 cleanup2: %pad2 = cleanuppad within %pad1 [] unreachable cleanupret: unreachable exit: ret void } define void @test() personality i32 (...)* undef { ; CHECK-LABEL: @test( ; CHECK-NEXT: ret void ; call void @foo() ret void }