; RUN: opt -S -objc-arc < %s | FileCheck %s

declare void @use_pointer(i8*)
declare i8* @returner()
declare i8* @objc_retain(i8*)
declare i8* @objc_autoreleaseReturnValue(i8*)
declare i8* @objc_retainAutoreleasedReturnValue(i8*)

; Clean up residue left behind after inlining.

; CHECK-LABEL: define void @test0(
; CHECK: entry:
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test0(i8* %call.i) {
entry:
  %0 = tail call i8* @objc_retain(i8* %call.i) nounwind
  %1 = tail call i8* @objc_autoreleaseReturnValue(i8* %0) nounwind
  ret void
}

; Same as test0, but with slightly different use arrangements.

; CHECK-LABEL: define void @test1(
; CHECK: entry:
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test1(i8* %call.i) {
entry:
  %0 = tail call i8* @objc_retain(i8* %call.i) nounwind
  %1 = tail call i8* @objc_autoreleaseReturnValue(i8* %call.i) nounwind
  ret void
}

; Delete a retainRV+autoreleaseRV even if the pointer is used.

; CHECK-LABEL: define void @test24(
; CHECK-NEXT: entry:
; CHECK-NEXT:   call void @use_pointer(i8* %p)
; CHECK-NEXT:   ret void
; CHECK-NEXT: }
define void @test24(i8* %p) {
entry:
  call i8* @objc_autoreleaseReturnValue(i8* %p) nounwind
  call i8* @objc_retainAutoreleasedReturnValue(i8* %p) nounwind
  call void @use_pointer(i8* %p)
  ret void
}
