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

declare i8* @objc_autoreleaseReturnValue(i8*)
declare i8* @foo1()

; Check that ARC contraction replaces the function return with the value
; returned by @objc_autoreleaseReturnValue.

; CHECK: %[[V0:[0-9]+]] = tail call i8* @objc_autoreleaseReturnValue(
; CHECK: %[[V1:[0-9]+]] = bitcast i8* %[[V0]] to i32*
; CHECK: ret i32* %[[V1]]

define i32* @autoreleaseRVTailCall() {
  %1 = call i8* @foo1()
  %2 = bitcast i8* %1 to i32*
  %3 = tail call i8* @objc_autoreleaseReturnValue(i8* %1)
  ret i32* %2
}