blob: 27844585dedae3a495f4cea7d7b38183410db81f [file]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -o - %s | FileCheck %s
target triple = "arm64-apple-ios18"
declare ptr @f()
; Verify that ObjCARCContract rewrites retainRV to claimRV, removing the
; retainRV marker (i.e. there should be no `mov x29, x29` instruction).
define ptr @t() {
; CHECK-LABEL: t:
; CHECK: ; %bb.0:
; CHECK-NEXT: stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
; CHECK-NEXT: .cfi_def_cfa_offset 16
; CHECK-NEXT: .cfi_offset w30, -8
; CHECK-NEXT: .cfi_offset w29, -16
; CHECK-NEXT: bl _f
; CHECK-NEXT: bl _objc_claimAutoreleasedReturnValue
; CHECK-NEXT: ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
; CHECK-NEXT: ret
%call = call ptr @f() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ]
ret ptr %call
}
declare ptr @llvm.objc.retainAutoreleasedReturnValue(ptr)