• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt -S -argpromotion < %s | FileCheck %s
2; RUN: opt -S -passes=argpromotion < %s | FileCheck %s
3; RUN: opt -S -debugify -o /dev/null < %s
4target triple = "x86_64-pc-windows-msvc"
5
6define internal void @callee(i8*) {
7entry:
8  call void @thunk()
9  ret void
10}
11
12define void @test1() personality i32 (...)* @__CxxFrameHandler3 {
13entry:
14  invoke void @thunk()
15          to label %out unwind label %cpad
16
17out:
18  ret void
19
20cpad:
21  %pad = cleanuppad within none []
22  call void @callee(i8* null) [ "funclet"(token %pad) ]
23  cleanupret from %pad unwind to caller
24}
25
26; CHECK-LABEL: define void @test1(
27; CHECK:      %[[pad:.*]] = cleanuppad within none []
28; CHECK-NEXT: call void @callee() [ "funclet"(token %[[pad]]) ]
29; CHECK-NEXT: cleanupret from %[[pad]] unwind to caller
30
31declare void @thunk()
32
33declare i32 @__CxxFrameHandler3(...)
34