xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/cleanuppad-large-codemodel.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-pc-windows-msvc -code-model=large -o - < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdeclare i32 @__CxxFrameHandler3(...)
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdeclare void @bar()
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine void @foo() personality i32 (...)* @__CxxFrameHandler3 {
8*9880d681SAndroid Build Coastguard Workerentry:
9*9880d681SAndroid Build Coastguard Worker  invoke void @bar()
10*9880d681SAndroid Build Coastguard Worker    to label %exit unwind label %cleanup
11*9880d681SAndroid Build Coastguard Workercleanup:
12*9880d681SAndroid Build Coastguard Worker  %c = cleanuppad within none []
13*9880d681SAndroid Build Coastguard Worker  call void @bar() [ "funclet"(token %c) ]
14*9880d681SAndroid Build Coastguard Worker  cleanupret from %c unwind to caller
15*9880d681SAndroid Build Coastguard Workerexit:
16*9880d681SAndroid Build Coastguard Worker  ret void
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker; CHECK: foo: # @foo
20*9880d681SAndroid Build Coastguard Worker; CHECK: movabsq $bar, %[[reg:[^ ]*]]
21*9880d681SAndroid Build Coastguard Worker; CHECK: callq *%[[reg]]
22*9880d681SAndroid Build Coastguard Worker; CHECK: retq
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker; CHECK: "?dtor$2@?0?foo@4HA":
25*9880d681SAndroid Build Coastguard Worker; CHECK: movabsq $bar, %[[reg:[^ ]*]]
26*9880d681SAndroid Build Coastguard Worker; CHECK: callq *%[[reg]]
27*9880d681SAndroid Build Coastguard Worker; CHECK: retq                            # CLEANUPRET
28