summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/ObjCARC/contract-replace-arg-use.ll
blob: 26b0cd9a42adf5a55a8715c4b91a04e6a17c5962 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
; 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
}
OpenPOWER on IntegriCloud