54 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals2; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,TUNIT3; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,CGSCC4target triple = "x86_64-pc-windows-msvc"5 6define internal void @callee(ptr) {7; CHECK: Function Attrs: memory(readwrite, argmem: none)8; CHECK-LABEL: define {{[^@]+}}@callee9; CHECK-SAME: () #[[ATTR0:[0-9]+]] {10; CHECK-NEXT: entry:11; CHECK-NEXT: call void @thunk()12; CHECK-NEXT: ret void13;14entry:15 call void @thunk()16 ret void17}18 19define void @test1() personality ptr @__CxxFrameHandler3 {20; CHECK-LABEL: define {{[^@]+}}@test1() personality ptr @__CxxFrameHandler3 {21; CHECK-NEXT: entry:22; CHECK-NEXT: invoke void @thunk()23; CHECK-NEXT: to label [[OUT:%.*]] unwind label [[CPAD:%.*]]24; CHECK: out:25; CHECK-NEXT: ret void26; CHECK: cpad:27; CHECK-NEXT: [[PAD:%.*]] = cleanuppad within none []28; CHECK-NEXT: call void @callee() [ "funclet"(token [[PAD]]) ]29; CHECK-NEXT: cleanupret from [[PAD]] unwind to caller30;31entry:32 invoke void @thunk()33 to label %out unwind label %cpad34 35out:36 ret void37 38cpad:39 %pad = cleanuppad within none []40 call void @callee(ptr null) [ "funclet"(token %pad) ]41 cleanupret from %pad unwind to caller42}43 44 45declare void @thunk()46 47declare i32 @__CxxFrameHandler3(...)48;.49; CHECK: attributes #[[ATTR0]] = { memory(readwrite, argmem: none) }50;.51;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:52; CGSCC: {{.*}}53; TUNIT: {{.*}}54