xref: /llvm-project/llvm/test/Transforms/ObjCARC/contract-attached-call-no-marker.ll (revision 01e4f41b43b57dee751146fde9992c660bd7c714)
1; RUN: opt -passes=objc-arc-contract -S < %s | FileCheck %s
2
3; CHECK-LABEL: define void @test0() {
4; CHECK: %[[CALL:.*]] = notail call ptr @foo() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ]
5; CHECK-NEXT: ret void
6
7define void @test0() {
8  %call1 = call ptr @foo() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ]
9  ret void
10}
11
12; CHECK-LABEL: define void @test1() {
13; CHECK: %[[CALL:.*]] = notail call ptr @foo() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ]
14; CHECK-NEXT: ret void
15
16define void @test1() {
17  %call1 = call ptr @foo() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ]
18  ret void
19}
20
21declare ptr @foo()
22declare ptr @llvm.objc.retainAutoreleasedReturnValue(ptr)
23declare ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue(ptr)
24