| ; 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) |