xref: /aosp_15_r20/external/llvm/test/Transforms/LoopUnswitch/cleanuppad.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -loop-unswitch < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-pc-win32"
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine void @f(i32 %doit, i1 %x, i1 %y) personality i32 (...)* @__CxxFrameHandler3 {
5*9880d681SAndroid Build Coastguard Workerentry:
6*9880d681SAndroid Build Coastguard Worker  %tobool = icmp eq i32 %doit, 0
7*9880d681SAndroid Build Coastguard Worker  br label %for.cond
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerfor.cond:                                         ; preds = %for.inc, %entry
10*9880d681SAndroid Build Coastguard Worker  br i1 %x, label %for.body, label %for.end
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %for.cond
13*9880d681SAndroid Build Coastguard Worker  br i1 %tobool, label %if.then, label %for.inc
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerif.then:                                          ; preds = %for.body
16*9880d681SAndroid Build Coastguard Worker  br i1 %y, label %for.inc, label %delete.notnull
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdelete.notnull:                                   ; preds = %if.then
19*9880d681SAndroid Build Coastguard Worker  invoke void @g()
20*9880d681SAndroid Build Coastguard Worker          to label %invoke.cont unwind label %lpad
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerinvoke.cont:                                      ; preds = %delete.notnull
23*9880d681SAndroid Build Coastguard Worker  br label %for.inc
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerlpad:                                             ; preds = %delete.notnull
26*9880d681SAndroid Build Coastguard Worker  %cp = cleanuppad within none []
27*9880d681SAndroid Build Coastguard Worker  cleanupret from %cp unwind to caller
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerfor.inc:                                          ; preds = %invoke.cont, %if.then, %for.body
30*9880d681SAndroid Build Coastguard Worker  br label %for.cond
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerfor.end:                                          ; preds = %for.cond
33*9880d681SAndroid Build Coastguard Worker  ret void
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerdeclare void @g()
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdeclare i32 @__CxxFrameHandler3(...)
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define void @f(
41*9880d681SAndroid Build Coastguard Worker; CHECK: cleanuppad within none []
42*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cleanuppad
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerattributes #0 = { ssp uwtable }
45