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