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