xref: /aosp_15_r20/external/llvm/test/Transforms/SimplifyCFG/unreachable-cleanuppad.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -simplifycfg -S < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
3*9880d681SAndroid Build Coastguard Workertarget triple = "i686-pc-win32"
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdeclare i32 @__CxxFrameHandler3(...)
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdeclare void @fn_2()
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdefine void @fn_1(i1 %B) personality i32 (...)* @__CxxFrameHandler3 {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  br i1 %B, label %__Ea.exit, label %lor.lhs.false.i.i
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerlor.lhs.false.i.i:
14*9880d681SAndroid Build Coastguard Worker  br i1 %B, label %if.end.i.i, label %__Ea.exit
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerif.end.i.i:
17*9880d681SAndroid Build Coastguard Worker  invoke void @fn_2()
18*9880d681SAndroid Build Coastguard Worker          to label %__Ea.exit unwind label %ehcleanup.i
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerehcleanup.i:
21*9880d681SAndroid Build Coastguard Worker  %t4 = cleanuppad within none []
22*9880d681SAndroid Build Coastguard Worker  br label %arraydestroy.body.i
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerarraydestroy.body.i:
25*9880d681SAndroid Build Coastguard Worker  %gep = getelementptr i8, i8* null, i32 -1
26*9880d681SAndroid Build Coastguard Worker  br label %dtor.exit.i
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerdtor.exit.i:
29*9880d681SAndroid Build Coastguard Worker  br i1 %B, label %arraydestroy.done3.i, label %arraydestroy.body.i
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Workerarraydestroy.done3.i:
32*9880d681SAndroid Build Coastguard Worker  cleanupret from %t4 unwind to caller
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker__Ea.exit:
35*9880d681SAndroid Build Coastguard Worker  ret void
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define void @fn_1(
39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: entry:
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret void
41