summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/ObjCARC/basic.ll
diff options
context:
space:
mode:
authorPete Cooper <peter_cooper@apple.com>2018-12-18 20:32:49 +0000
committerPete Cooper <peter_cooper@apple.com>2018-12-18 20:32:49 +0000
commitbe4f5711073613115c036206db0d9a45fd0632ab (patch)
treec6abfb8491cb76ee11f26515ef05293f4b9eaf67 /llvm/test/Transforms/ObjCARC/basic.ll
parent36a03526e99cc8861bb2fefc3d1336a2e3d894cf (diff)
downloadbcm5719-llvm-be4f5711073613115c036206db0d9a45fd0632ab.tar.gz
bcm5719-llvm-be4f5711073613115c036206db0d9a45fd0632ab.zip
Change the objc ARC optimizer to use the new objc.* intrinsics
We're moving ARC optimisation and ARC emission in clang away from runtime methods and towards intrinsics. This is the part which actually uses the intrinsics in the ARC optimizer when both analyzing the existing calls and emitting new ones. Differential Revision: https://reviews.llvm.org/D55348 Reviewers: ahatanak llvm-svn: 349534
Diffstat (limited to 'llvm/test/Transforms/ObjCARC/basic.ll')
-rw-r--r--llvm/test/Transforms/ObjCARC/basic.ll1286
1 files changed, 643 insertions, 643 deletions
diff --git a/llvm/test/Transforms/ObjCARC/basic.ll b/llvm/test/Transforms/ObjCARC/basic.ll
index 70b83b93138..6524dad4ae3 100644
--- a/llvm/test/Transforms/ObjCARC/basic.ll
+++ b/llvm/test/Transforms/ObjCARC/basic.ll
@@ -2,19 +2,19 @@
target datalayout = "e-p:64:64:64"
-declare i8* @objc_retain(i8*)
-declare i8* @objc_retainAutoreleasedReturnValue(i8*)
-declare i8* @objc_unsafeClaimAutoreleasedReturnValue(i8*)
-declare void @objc_release(i8*)
-declare i8* @objc_autorelease(i8*)
-declare i8* @objc_autoreleaseReturnValue(i8*)
-declare void @objc_autoreleasePoolPop(i8*)
-declare i8* @objc_autoreleasePoolPush()
-declare i8* @objc_retainBlock(i8*)
-
-declare i8* @objc_retainedObject(i8*)
-declare i8* @objc_unretainedObject(i8*)
-declare i8* @objc_unretainedPointer(i8*)
+declare i8* @llvm.objc.retain(i8*)
+declare i8* @llvm.objc.retainAutoreleasedReturnValue(i8*)
+declare i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8*)
+declare void @llvm.objc.release(i8*)
+declare i8* @llvm.objc.autorelease(i8*)
+declare i8* @llvm.objc.autoreleaseReturnValue(i8*)
+declare void @llvm.objc.autoreleasePoolPop(i8*)
+declare i8* @llvm.objc.autoreleasePoolPush()
+declare i8* @llvm.objc.retainBlock(i8*)
+
+declare i8* @llvm.objc.retainedObject(i8*)
+declare i8* @llvm.objc.unretainedObject(i8*)
+declare i8* @llvm.objc.unretainedPointer(i8*)
declare void @use_pointer(i8*)
declare void @callee()
@@ -25,19 +25,19 @@ declare void @bar(i32 ()*)
declare void @llvm.dbg.value(metadata, metadata, metadata)
-declare i8* @objc_msgSend(i8*, i8*, ...)
+declare i8* @llvm.objc.msgSend(i8*, i8*, ...)
; Simple retain+release pair deletion, with some intervening control
; flow and harmless instructions.
; CHECK: define void @test0_precise(i32* %x, i1 %p) [[NUW:#[0-9]+]] {
-; CHECK: @objc_retain
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test0_precise(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -52,17 +52,17 @@ f:
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
ret void
}
; CHECK: define void @test0_imprecise(i32* %x, i1 %p) [[NUW]] {
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test0_imprecise(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -77,23 +77,23 @@ f:
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
ret void
}
; Like test0 but the release isn't always executed when the retain is,
; so the optimization is not safe.
-; TODO: Make the objc_release's argument be %0.
+; TODO: Make the llvm.objc.release's argument be %0.
; CHECK: define void @test1_precise(i32* %x, i1 %p, i1 %q) [[NUW]] {
-; CHECK: @objc_retain(i8* %a)
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain(i8* %a)
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test1_precise(i32* %x, i1 %p, i1 %q) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -109,7 +109,7 @@ f:
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
ret void
alt_return:
@@ -117,13 +117,13 @@ alt_return:
}
; CHECK: define void @test1_imprecise(i32* %x, i1 %p, i1 %q) [[NUW]] {
-; CHECK: @objc_retain(i8* %a)
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain(i8* %a)
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test1_imprecise(i32* %x, i1 %p, i1 %q) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -139,7 +139,7 @@ f:
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
ret void
alt_return:
@@ -151,15 +151,15 @@ alt_return:
; CHECK: define void @test1b_precise(i8* %x, i1 %p, i1 %q) {
; CHECK: entry:
-; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]]
-; CHECK-NOT: @objc_
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
+; CHECK-NOT: @llvm.objc.
; CHECK: if.end5:
-; CHECK: tail call void @objc_release(i8* %x) [[NUW]]
-; CHECK-NOT: @objc_
+; CHECK: tail call void @llvm.objc.release(i8* %x) [[NUW]]
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test1b_precise(i8* %x, i1 %p, i1 %q) {
entry:
- tail call i8* @objc_retain(i8* %x) nounwind
+ tail call i8* @llvm.objc.retain(i8* %x) nounwind
br i1 %p, label %if.then, label %if.end
if.then: ; preds = %entry
@@ -174,21 +174,21 @@ if.then3: ; preds = %if.end
br label %if.end5
if.end5: ; preds = %if.then3, %if.end
- tail call void @objc_release(i8* %x) nounwind
+ tail call void @llvm.objc.release(i8* %x) nounwind
ret void
}
; CHECK-LABEL: define void @test1b_imprecise(
; CHECK: entry:
-; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW:#[0-9]+]]
-; CHECK-NOT: @objc_
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW:#[0-9]+]]
+; CHECK-NOT: @llvm.objc.
; CHECK: if.end5:
-; CHECK: tail call void @objc_release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEASE:[0-9]+]]
-; CHECK-NOT: @objc_
+; CHECK: tail call void @llvm.objc.release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEASE:[0-9]+]]
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test1b_imprecise(i8* %x, i1 %p, i1 %q) {
entry:
- tail call i8* @objc_retain(i8* %x) nounwind
+ tail call i8* @llvm.objc.retain(i8* %x) nounwind
br i1 %p, label %if.then, label %if.end
if.then: ; preds = %entry
@@ -203,7 +203,7 @@ if.then3: ; preds = %if.end
br label %if.end5
if.end5: ; preds = %if.then3, %if.end
- tail call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ tail call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
ret void
}
@@ -212,13 +212,13 @@ if.end5: ; preds = %if.then3, %if.end
; so the optimization is not safe.
; CHECK-LABEL: define void @test2_precise(
-; CHECK: @objc_retain(i8* %a)
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain(i8* %a)
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test2_precise(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -236,18 +236,18 @@ f:
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
ret void
}
; CHECK-LABEL: define void @test2_imprecise(
-; CHECK: @objc_retain(i8* %a)
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain(i8* %a)
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test2_imprecise(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -265,7 +265,7 @@ f:
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
ret void
}
@@ -275,18 +275,18 @@ return:
; TODO: For now, assume this can't happen.
; CHECK-LABEL: define void @test3_precise(
-; TODO: @objc_retain(i8* %a)
-; TODO: @objc_release
+; TODO: @llvm.objc.retain(i8* %a)
+; TODO: @llvm.objc.release
; CHECK: }
define void @test3_precise(i32* %x, i1* %q) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br label %loop
loop:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
%j = load volatile i1, i1* %q
br i1 %j, label %loop, label %return
@@ -295,18 +295,18 @@ return:
}
; CHECK-LABEL: define void @test3_imprecise(
-; TODO: @objc_retain(i8* %a)
-; TODO: @objc_release
+; TODO: @llvm.objc.retain(i8* %a)
+; TODO: @llvm.objc.release
; CHECK: }
define void @test3_imprecise(i32* %x, i1* %q) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br label %loop
loop:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
%j = load volatile i1, i1* %q
br i1 %j, label %loop, label %return
@@ -321,8 +321,8 @@ return:
; so the optimization is not safe.
; CHECK-LABEL: define void @test4_precise(
-; TODO: @objc_retain(i8* %a)
-; TODO: @objc_release
+; TODO: @llvm.objc.retain(i8* %a)
+; TODO: @llvm.objc.release
; CHECK: }
define void @test4_precise(i32* %x, i1* %q) nounwind {
entry:
@@ -330,19 +330,19 @@ entry:
loop:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
%j = load volatile i1, i1* %q
br i1 %j, label %loop, label %return
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
ret void
}
; CHECK-LABEL: define void @test4_imprecise(
-; TODO: @objc_retain(i8* %a)
-; TODO: @objc_release
+; TODO: @llvm.objc.retain(i8* %a)
+; TODO: @llvm.objc.release
; CHECK: }
define void @test4_imprecise(i32* %x, i1* %q) nounwind {
entry:
@@ -350,13 +350,13 @@ entry:
loop:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
%j = load volatile i1, i1* %q
br i1 %j, label %loop, label %return
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
ret void
}
@@ -365,34 +365,34 @@ return:
; so the optimization is not safe.
; CHECK-LABEL: define void @test5a(
-; CHECK: @objc_retain(i8*
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain(i8*
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test5a(i32* %x, i1 %q, i8* %y) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
%s = select i1 %q, i8* %y, i8* %0
call void @use_pointer(i8* %s)
store i32 7, i32* %x
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
ret void
}
; CHECK-LABEL: define void @test5b(
-; CHECK: @objc_retain(i8*
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain(i8*
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test5b(i32* %x, i1 %q, i8* %y) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
%s = select i1 %q, i8* %y, i8* %0
call void @use_pointer(i8* %s)
store i32 7, i32* %x
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
ret void
}
@@ -402,17 +402,17 @@ entry:
; CHECK-LABEL: define void @test6a(
; CHECK: entry:
-; CHECK: tail call i8* @objc_retain(
+; CHECK: tail call i8* @llvm.objc.retain
; CHECK: t:
-; CHECK: call void @objc_release(
+; CHECK: call void @llvm.objc.release
; CHECK: f:
-; CHECK: call void @objc_release(
+; CHECK: call void @llvm.objc.release
; CHECK: return:
; CHECK: }
define void @test6a(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -420,14 +420,14 @@ t:
%b = bitcast i32* %x to float*
store float 2.0, float* %b
%ct = bitcast i32* %x to i8*
- call void @objc_release(i8* %ct) nounwind
+ call void @llvm.objc.release(i8* %ct) nounwind
br label %return
f:
store i32 7, i32* %x
call void @callee()
%cf = bitcast i32* %x to i8*
- call void @objc_release(i8* %cf) nounwind
+ call void @llvm.objc.release(i8* %cf) nounwind
br label %return
return:
@@ -435,12 +435,12 @@ return:
}
; CHECK-LABEL: define void @test6b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test6b(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -448,14 +448,14 @@ t:
%b = bitcast i32* %x to float*
store float 2.0, float* %b
%ct = bitcast i32* %x to i8*
- call void @objc_release(i8* %ct) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %ct) nounwind, !clang.imprecise_release !0
br label %return
f:
store i32 7, i32* %x
call void @callee()
%cf = bitcast i32* %x to i8*
- call void @objc_release(i8* %cf) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %cf) nounwind, !clang.imprecise_release !0
br label %return
return:
@@ -464,17 +464,17 @@ return:
; CHECK-LABEL: define void @test6c(
; CHECK: entry:
-; CHECK: tail call i8* @objc_retain(
+; CHECK: tail call i8* @llvm.objc.retain
; CHECK: t:
-; CHECK: call void @objc_release(
+; CHECK: call void @llvm.objc.release
; CHECK: f:
-; CHECK: call void @objc_release(
+; CHECK: call void @llvm.objc.release
; CHECK: return:
; CHECK: }
define void @test6c(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -482,14 +482,14 @@ t:
%b = bitcast i32* %x to float*
store float 2.0, float* %b
%ct = bitcast i32* %x to i8*
- call void @objc_release(i8* %ct) nounwind
+ call void @llvm.objc.release(i8* %ct) nounwind
br label %return
f:
store i32 7, i32* %x
call void @callee()
%cf = bitcast i32* %x to i8*
- call void @objc_release(i8* %cf) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %cf) nounwind, !clang.imprecise_release !0
br label %return
return:
@@ -498,17 +498,17 @@ return:
; CHECK-LABEL: define void @test6d(
; CHECK: entry:
-; CHECK: tail call i8* @objc_retain(
+; CHECK: tail call i8* @llvm.objc.retain
; CHECK: t:
-; CHECK: call void @objc_release(
+; CHECK: call void @llvm.objc.release
; CHECK: f:
-; CHECK: call void @objc_release(
+; CHECK: call void @llvm.objc.release
; CHECK: return:
; CHECK: }
define void @test6d(i32* %x, i1 %p) nounwind {
entry:
%a = bitcast i32* %x to i8*
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
br i1 %p, label %t, label %f
t:
@@ -516,14 +516,14 @@ t:
%b = bitcast i32* %x to float*
store float 2.0, float* %b
%ct = bitcast i32* %x to i8*
- call void @objc_release(i8* %ct) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %ct) nounwind, !clang.imprecise_release !0
br label %return
f:
store i32 7, i32* %x
call void @callee()
%cf = bitcast i32* %x to i8*
- call void @objc_release(i8* %cf) nounwind
+ call void @llvm.objc.release(i8* %cf) nounwind
br label %return
return:
@@ -536,13 +536,13 @@ return:
; CHECK-LABEL: define void @test7(
; CHECK: entry:
-; CHECK-NOT: objc_
+; CHECK-NOT: llvm.objc.
; CHECK: t:
-; CHECK: call i8* @objc_retain
+; CHECK: call i8* @llvm.objc.retain
; CHECK: f:
-; CHECK: call i8* @objc_retain
+; CHECK: call i8* @llvm.objc.retain
; CHECK: return:
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: }
define void @test7(i32* %x, i1 %p) nounwind {
entry:
@@ -550,26 +550,26 @@ entry:
br i1 %p, label %t, label %f
t:
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i8 3, i8* %a
%b = bitcast i32* %x to float*
store float 2.0, float* %b
br label %return
f:
- %1 = call i8* @objc_retain(i8* %a) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i32 7, i32* %x
call void @callee()
br label %return
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
ret void
}
; CHECK-LABEL: define void @test7b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test7b(i32* %x, i1 %p) nounwind {
entry:
@@ -577,21 +577,21 @@ entry:
br i1 %p, label %t, label %f
t:
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i8 3, i8* %a
%b = bitcast i32* %x to float*
store float 2.0, float* %b
br label %return
f:
- %1 = call i8* @objc_retain(i8* %a) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i32 7, i32* %x
call void @callee()
br label %return
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
ret void
}
@@ -599,11 +599,11 @@ return:
; CHECK-LABEL: define void @test7c(
; CHECK: t:
-; CHECK: call i8* @objc_retainBlock
+; CHECK: call i8* @llvm.objc.retainBlock
; CHECK: f:
-; CHECK: call i8* @objc_retain
+; CHECK: call i8* @llvm.objc.retain
; CHECK: return:
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: }
define void @test7c(i32* %x, i1 %p) nounwind {
entry:
@@ -611,21 +611,21 @@ entry:
br i1 %p, label %t, label %f
t:
- %0 = call i8* @objc_retainBlock(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retainBlock(i8* %a) nounwind
store i8 3, i8* %a
%b = bitcast i32* %x to float*
store float 2.0, float* %b
br label %return
f:
- %1 = call i8* @objc_retain(i8* %a) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i32 7, i32* %x
call void @callee()
br label %return
return:
%c = bitcast i32* %x to i8*
- call void @objc_release(i8* %c) nounwind
+ call void @llvm.objc.release(i8* %c) nounwind
ret void
}
@@ -635,14 +635,14 @@ return:
; CHECK-LABEL: define void @test8a(
; CHECK: entry:
; CHECK: t:
-; CHECK: @objc_retain
+; CHECK: @llvm.objc.retain
; CHECK: f:
-; CHECK: @objc_retain
+; CHECK: @llvm.objc.retain
; CHECK: mid:
; CHECK: u:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: g:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: return:
; CHECK: }
define void @test8a(i32* %x, i1 %p, i1 %q) nounwind {
@@ -651,14 +651,14 @@ entry:
br i1 %p, label %t, label %f
t:
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i8 3, i8* %a
%b = bitcast i32* %x to float*
store float 2.0, float* %b
br label %mid
f:
- %1 = call i8* @objc_retain(i8* %a) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i32 7, i32* %x
br label %mid
@@ -668,12 +668,12 @@ mid:
u:
call void @callee()
%cu = bitcast i32* %x to i8*
- call void @objc_release(i8* %cu) nounwind
+ call void @llvm.objc.release(i8* %cu) nounwind
br label %return
g:
%cg = bitcast i32* %x to i8*
- call void @objc_release(i8* %cg) nounwind
+ call void @llvm.objc.release(i8* %cg) nounwind
br label %return
return:
@@ -681,7 +681,7 @@ return:
}
; CHECK-LABEL: define void @test8b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test8b(i32* %x, i1 %p, i1 %q) nounwind {
entry:
@@ -689,14 +689,14 @@ entry:
br i1 %p, label %t, label %f
t:
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i8 3, i8* %a
%b = bitcast i32* %x to float*
store float 2.0, float* %b
br label %mid
f:
- %1 = call i8* @objc_retain(i8* %a) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i32 7, i32* %x
br label %mid
@@ -706,12 +706,12 @@ mid:
u:
call void @callee()
%cu = bitcast i32* %x to i8*
- call void @objc_release(i8* %cu) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %cu) nounwind, !clang.imprecise_release !0
br label %return
g:
%cg = bitcast i32* %x to i8*
- call void @objc_release(i8* %cg) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %cg) nounwind, !clang.imprecise_release !0
br label %return
return:
@@ -721,14 +721,14 @@ return:
; CHECK-LABEL: define void @test8c(
; CHECK: entry:
; CHECK: t:
-; CHECK: @objc_retain
+; CHECK: @llvm.objc.retain
; CHECK: f:
-; CHECK: @objc_retain
+; CHECK: @llvm.objc.retain
; CHECK: mid:
; CHECK: u:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: g:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: return:
; CHECK: }
define void @test8c(i32* %x, i1 %p, i1 %q) nounwind {
@@ -737,14 +737,14 @@ entry:
br i1 %p, label %t, label %f
t:
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i8 3, i8* %a
%b = bitcast i32* %x to float*
store float 2.0, float* %b
br label %mid
f:
- %1 = call i8* @objc_retain(i8* %a) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i32 7, i32* %x
br label %mid
@@ -754,12 +754,12 @@ mid:
u:
call void @callee()
%cu = bitcast i32* %x to i8*
- call void @objc_release(i8* %cu) nounwind
+ call void @llvm.objc.release(i8* %cu) nounwind
br label %return
g:
%cg = bitcast i32* %x to i8*
- call void @objc_release(i8* %cg) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %cg) nounwind, !clang.imprecise_release !0
br label %return
return:
@@ -769,14 +769,14 @@ return:
; CHECK-LABEL: define void @test8d(
; CHECK: entry:
; CHECK: t:
-; CHECK: @objc_retain
+; CHECK: @llvm.objc.retain
; CHECK: f:
-; CHECK: @objc_retain
+; CHECK: @llvm.objc.retain
; CHECK: mid:
; CHECK: u:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: g:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: return:
; CHECK: }
define void @test8d(i32* %x, i1 %p, i1 %q) nounwind {
@@ -785,14 +785,14 @@ entry:
br i1 %p, label %t, label %f
t:
- %0 = call i8* @objc_retain(i8* %a) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i8 3, i8* %a
%b = bitcast i32* %x to float*
store float 2.0, float* %b
br label %mid
f:
- %1 = call i8* @objc_retain(i8* %a) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
store i32 7, i32* %x
br label %mid
@@ -802,12 +802,12 @@ mid:
u:
call void @callee()
%cu = bitcast i32* %x to i8*
- call void @objc_release(i8* %cu) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %cu) nounwind, !clang.imprecise_release !0
br label %return
g:
%cg = bitcast i32* %x to i8*
- call void @objc_release(i8* %cg) nounwind
+ call void @llvm.objc.release(i8* %cg) nounwind
br label %return
return:
@@ -817,58 +817,58 @@ return:
; Trivial retain+release pair deletion.
; CHECK-LABEL: define void @test9(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test9(i8* %x) nounwind {
entry:
- %0 = call i8* @objc_retain(i8* %x) nounwind
- call void @objc_release(i8* %0) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %0) nounwind
ret void
}
; Retain+release pair, but on an unknown pointer relationship. Don't delete!
; CHECK-LABEL: define void @test9b(
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %s)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %s)
; CHECK: }
define void @test9b(i8* %x, i1 %j, i8* %p) nounwind {
entry:
- %0 = call i8* @objc_retain(i8* %x) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
%s = select i1 %j, i8* %x, i8* %p
- call void @objc_release(i8* %s) nounwind
+ call void @llvm.objc.release(i8* %s) nounwind
ret void
}
; Trivial retain+release pair with intervening calls - don't delete!
; CHECK-LABEL: define void @test10(
-; CHECK: @objc_retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
; CHECK: @callee
; CHECK: @use_pointer
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test10(i8* %x) nounwind {
entry:
- %0 = call i8* @objc_retain(i8* %x) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
call void @callee()
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %0) nounwind
+ call void @llvm.objc.release(i8* %0) nounwind
ret void
}
; Trivial retain+autoreleaserelease pair. Don't delete!
-; Also, add a tail keyword, since objc_retain can never be passed
+; Also, add a tail keyword, since llvm.objc.retain can never be passed
; a stack argument.
; CHECK-LABEL: define void @test11(
-; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]]
-; CHECK: call i8* @objc_autorelease(i8* %0) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
+; CHECK: call i8* @llvm.objc.autorelease(i8* %0) [[NUW]]
; CHECK: }
define void @test11(i8* %x) nounwind {
entry:
- %0 = call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_autorelease(i8* %0) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.autorelease(i8* %0) nounwind
call void @use_pointer(i8* %x)
ret void
}
@@ -881,8 +881,8 @@ entry:
; CHECK: }
define void @test11a(i8* %x) nounwind {
entry:
- %0 = call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_autorelease(i8* %0) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.autorelease(i8* %0) nounwind
ret void
}
@@ -891,13 +891,13 @@ entry:
; want it to be in the autorelease pool.
; CHECK-LABEL: define i8* @test11b(
-; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]]
-; CHECK: call i8* @objc_autorelease(i8* %0) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
+; CHECK: call i8* @llvm.objc.autorelease(i8* %0) [[NUW]]
; CHECK: }
define i8* @test11b(i8* %x) nounwind {
entry:
- %0 = call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_autorelease(i8* %0) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.autorelease(i8* %0) nounwind
ret i8* %x
}
@@ -906,34 +906,34 @@ entry:
; CHECK-LABEL: define void @test12(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_retain(i8* %x)
-; CHECK-NEXT: @objc_retain
-; CHECK: @objc_release
+; CHECK-NEXT: @llvm.objc.retain(i8* %x)
+; CHECK-NEXT: @llvm.objc.retain
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test12(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
; Trivial retain,autorelease pair. Don't delete!
; CHECK-LABEL: define void @test13(
-; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]]
-; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
; CHECK: @use_pointer(i8* %x)
-; CHECK: call i8* @objc_autorelease(i8* %x) [[NUW]]
+; CHECK: call i8* @llvm.objc.autorelease(i8* %x) [[NUW]]
; CHECK: }
define void @test13(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
- call i8* @objc_autorelease(i8* %x) nounwind
+ call i8* @llvm.objc.autorelease(i8* %x) nounwind
ret void
}
@@ -941,22 +941,22 @@ entry:
; CHECK-LABEL: define void @test13b(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_retain(i8* %x)
+; CHECK-NEXT: @llvm.objc.retain(i8* %x)
; CHECK-NEXT: @use_pointer
; CHECK-NEXT: @use_pointer
; CHECK-NEXT: @use_pointer
-; CHECK-NEXT: @objc_release
+; CHECK-NEXT: @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test13b(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -964,20 +964,20 @@ entry:
; autoreleasePoolPop in the way.
; CHECK-LABEL: define void @test13c(
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_autoreleasePoolPop
-; CHECK: @objc_retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.autoreleasePoolPop
+; CHECK: @llvm.objc.retain(i8* %x)
; CHECK: @use_pointer
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test13c(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call void @objc_autoreleasePoolPop(i8* undef)
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call void @llvm.objc.autoreleasePoolPop(i8* undef)
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -986,24 +986,24 @@ entry:
; CHECK-LABEL: define void @test13d(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_retain(i8* %x)
-; CHECK-NEXT: @objc_autoreleasePoolPush
+; CHECK-NEXT: @llvm.objc.retain(i8* %x)
+; CHECK-NEXT: @llvm.objc.autoreleasePoolPush
; CHECK-NEXT: @use_pointer
; CHECK-NEXT: @use_pointer
; CHECK-NEXT: @use_pointer
-; CHECK-NEXT: @objc_release
+; CHECK-NEXT: @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test13d(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_autoreleasePoolPush()
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.autoreleasePoolPush()
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -1013,20 +1013,20 @@ entry:
; CHECK-LABEL: define void @test14(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_retain
+; CHECK-NEXT: @llvm.objc.retain
; CHECK-NEXT: @use_pointer
; CHECK-NEXT: @use_pointer
-; CHECK-NEXT: @objc_release
-; CHECK-NEXT: @objc_release
+; CHECK-NEXT: @llvm.objc.release
+; CHECK-NEXT: @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test14(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -1035,18 +1035,18 @@ entry:
; CHECK-LABEL: define void @test15(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_retain(i8* %x)
+; CHECK-NEXT: @llvm.objc.retain(i8* %x)
; CHECK-NEXT: @use_pointer
-; CHECK-NEXT: @objc_autorelease(i8* %x)
-; CHECK-NEXT: @objc_release
+; CHECK-NEXT: @llvm.objc.autorelease(i8* %x)
+; CHECK-NEXT: @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test15(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
- call i8* @objc_autorelease(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind
+ call i8* @llvm.objc.autorelease(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -1055,52 +1055,52 @@ entry:
; CHECK-LABEL: define void @test15b(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_retain
-; CHECK-NEXT: @objc_autorelease
-; CHECK-NEXT: @objc_release
+; CHECK-NEXT: @llvm.objc.retain
+; CHECK-NEXT: @llvm.objc.autorelease
+; CHECK-NEXT: @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test15b(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_autorelease(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.autorelease(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
; CHECK-LABEL: define void @test15c(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_autorelease
+; CHECK-NEXT: @llvm.objc.autorelease
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test15c(i8* %x, i64 %n) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_autorelease(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.autorelease(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
ret void
}
; Retain+release pairs in diamonds, all dominated by a retain.
; CHECK-LABEL: define void @test16a(
-; CHECK: @objc_retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
; CHECK-NOT: @objc
; CHECK: purple:
; CHECK: @use_pointer
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test16a(i1 %a, i1 %b, i8* %x) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br i1 %a, label %red, label %orange
red:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
orange:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
yellow:
@@ -1109,38 +1109,38 @@ yellow:
br i1 %b, label %green, label %blue
green:
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
br label %purple
blue:
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
br label %purple
purple:
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
; CHECK-LABEL: define void @test16b(
-; CHECK: @objc_retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
; CHECK-NOT: @objc
; CHECK: purple:
; CHECK-NEXT: @use_pointer
; CHECK-NEXT: @use_pointer
-; CHECK-NEXT: @objc_release
+; CHECK-NEXT: @llvm.objc.release
; CHECK: }
define void @test16b(i1 %a, i1 %b, i8* %x) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br i1 %a, label %red, label %orange
red:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
orange:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
yellow:
@@ -1149,38 +1149,38 @@ yellow:
br i1 %b, label %green, label %blue
green:
- call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
br label %purple
blue:
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
br label %purple
purple:
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
; CHECK-LABEL: define void @test16c(
-; CHECK: @objc_retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
; CHECK-NOT: @objc
; CHECK: purple:
; CHECK: @use_pointer
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test16c(i1 %a, i1 %b, i8* %x) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br i1 %a, label %red, label %orange
red:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
orange:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
yellow:
@@ -1189,34 +1189,34 @@ yellow:
br i1 %b, label %green, label %blue
green:
- call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
br label %purple
blue:
- call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
br label %purple
purple:
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
ret void
}
; CHECK-LABEL: define void @test16d(
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc
; CHECK: }
define void @test16d(i1 %a, i1 %b, i8* %x) {
entry:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br i1 %a, label %red, label %orange
red:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
orange:
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
br label %yellow
yellow:
@@ -1225,11 +1225,11 @@ yellow:
br i1 %b, label %green, label %blue
green:
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
br label %purple
blue:
- call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
br label %purple
purple:
@@ -1239,24 +1239,24 @@ purple:
; Delete no-ops.
; CHECK-LABEL: define void @test18(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test18() {
- call i8* @objc_retain(i8* null)
- call void @objc_release(i8* null)
- call i8* @objc_autorelease(i8* null)
+ call i8* @llvm.objc.retain(i8* null)
+ call void @llvm.objc.release(i8* null)
+ call i8* @llvm.objc.autorelease(i8* null)
ret void
}
; Delete no-ops where undef can be assumed to be null.
; CHECK-LABEL: define void @test18b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test18b() {
- call i8* @objc_retain(i8* undef)
- call void @objc_release(i8* undef)
- call i8* @objc_autorelease(i8* undef)
+ call i8* @llvm.objc.retain(i8* undef)
+ call void @llvm.objc.release(i8* undef)
+ call i8* @llvm.objc.autorelease(i8* undef)
ret void
}
@@ -1266,34 +1266,34 @@ define void @test18b() {
; CHECK: define void @test19(i32* %y) {
; CHECK: %z = bitcast i32* %y to i8*
; CHECK: %0 = bitcast i32* %y to i8*
-; CHECK: %1 = tail call i8* @objc_retain(i8* %0)
+; CHECK: %1 = tail call i8* @llvm.objc.retain(i8* %0)
; CHECK: call void @use_pointer(i8* %z)
; CHECK: call void @use_pointer(i8* %z)
; CHECK: %2 = bitcast i32* %y to i8*
-; CHECK: call void @objc_release(i8* %2)
+; CHECK: call void @llvm.objc.release(i8* %2)
; CHECK: ret void
; CHECK: }
define void @test19(i32* %y) {
entry:
%x = bitcast i32* %y to i8*
- %0 = call i8* @objc_retain(i8* %x) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
%z = bitcast i32* %y to i8*
call void @use_pointer(i8* %z)
call void @use_pointer(i8* %z)
- call void @objc_release(i8* %x)
+ call void @llvm.objc.release(i8* %x)
ret void
}
; Bitcast insertion
; CHECK-LABEL: define void @test20(
-; CHECK: %tmp1 = tail call i8* @objc_retain(i8* %tmp) [[NUW]]
+; CHECK: %tmp1 = tail call i8* @llvm.objc.retain(i8* %tmp) [[NUW]]
; CHECK-NEXT: invoke
; CHECK: }
define void @test20(double* %self) personality i32 (...)* @__gxx_personality_v0 {
if.then12:
%tmp = bitcast double* %self to i8*
- %tmp1 = call i8* @objc_retain(i8* %tmp) nounwind
+ %tmp1 = call i8* @llvm.objc.retain(i8* %tmp) nounwind
invoke void @invokee()
to label %invoke.cont23 unwind label %lpad20
@@ -1321,8 +1321,8 @@ if.end: ; preds = %invoke.cont23
define i8* @test21() {
entry:
%call = call i8* @returner()
- %0 = call i8* @objc_retain(i8* %call) nounwind
- %1 = call i8* @objc_autorelease(i8* %0) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %call) nounwind
+ %1 = call i8* @llvm.objc.autorelease(i8* %0) nounwind
ret i8* %1
}
@@ -1331,10 +1331,10 @@ entry:
; CHECK-LABEL: define void @test22(
; CHECK: B:
; CHECK: %1 = bitcast double* %p to i8*
-; CHECK: call void @objc_release(i8* %1)
+; CHECK: call void @llvm.objc.release(i8* %1)
; CHECK: br label %C
; CHECK: C: ; preds = %B, %A
-; CHECK-NOT: @objc_release
+; CHECK-NOT: @llvm.objc.release
; CHECK: }
define void @test22(double* %p, i1 %a) {
br i1 %a, label %A, label %B
@@ -1345,16 +1345,16 @@ B:
C:
%h = phi double* [ null, %A ], [ %p, %B ]
%c = bitcast double* %h to i8*
- call void @objc_release(i8* %c), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %c), !clang.imprecise_release !0
ret void
}
-; Do not move an objc_release that doesn't have the clang.imprecise_release tag.
+; Do not move an llvm.objc.release that doesn't have the clang.imprecise_release tag.
; CHECK-LABEL: define void @test22_precise(
; CHECK: %[[P0:.*]] = phi double*
; CHECK: %[[V0:.*]] = bitcast double* %[[P0]] to i8*
-; CHECK: call void @objc_release(i8* %[[V0]])
+; CHECK: call void @llvm.objc.release(i8* %[[V0]])
; CHECK: ret void
define void @test22_precise(double* %p, i1 %a) {
br i1 %a, label %A, label %B
@@ -1365,21 +1365,21 @@ B:
C:
%h = phi double* [ null, %A ], [ %p, %B ]
%c = bitcast double* %h to i8*
- call void @objc_release(i8* %c)
+ call void @llvm.objc.release(i8* %c)
ret void
}
; Any call can decrement a retain count.
; CHECK-LABEL: define void @test24(
-; CHECK: @objc_retain(i8* %a)
-; CHECK: @objc_release
+; CHECK: @llvm.objc.retain(i8* %a)
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test24(i8* %r, i8* %a) {
- call i8* @objc_retain(i8* %a)
+ call i8* @llvm.objc.retain(i8* %a)
call void @use_pointer(i8* %r)
%q = load i8, i8* %a
- call void @objc_release(i8* %a)
+ call void @llvm.objc.release(i8* %a)
ret void
}
@@ -1388,14 +1388,14 @@ define void @test24(i8* %r, i8* %a) {
; CHECK-LABEL: define void @test25(
; CHECK: entry:
-; CHECK: call i8* @objc_retain(i8* %p)
+; CHECK: call i8* @llvm.objc.retain(i8* %p)
; CHECK: true:
; CHECK: done:
-; CHECK: call void @objc_release(i8* %p)
+; CHECK: call void @llvm.objc.release(i8* %p)
; CHECK: }
define void @test25(i8* %p, i1 %x) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
call void @callee()
br i1 %x, label %true, label %done
@@ -1404,7 +1404,7 @@ true:
br label %done
done:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
@@ -1413,14 +1413,14 @@ done:
; CHECK-LABEL: define void @test26(
; CHECK: entry:
-; CHECK: call i8* @objc_retain(i8* %p)
+; CHECK: call i8* @llvm.objc.retain(i8* %p)
; CHECK: true:
; CHECK: done:
-; CHECK: call void @objc_release(i8* %p)
+; CHECK: call void @llvm.objc.release(i8* %p)
; CHECK: }
define void @test26(i8* %p, i1 %x) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1429,7 +1429,7 @@ true:
done:
store i8 0, i8* %p
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
@@ -1437,15 +1437,15 @@ done:
; CHECK-LABEL: define void @test27(
; CHECK: entry:
-; CHECK: call i8* @objc_retain(i8* %p)
+; CHECK: call i8* @llvm.objc.retain(i8* %p)
; CHECK: loop:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: done:
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: }
define void @test27(i8* %p, i1 %x, i1 %y) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %loop, label %done
loop:
@@ -1454,25 +1454,25 @@ loop:
br i1 %y, label %done, label %loop
done:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; Trivial code motion case: Triangle.
; CHECK-LABEL: define void @test28(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: true:
-; CHECK: call i8* @objc_retain(
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: store
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: done:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test28(i8* %p, i1 %x) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1481,7 +1481,7 @@ true:
br label %done
done:
- call void @objc_release(i8* %p), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
ret void
}
@@ -1489,19 +1489,19 @@ done:
; unrelated memory references!
; CHECK-LABEL: define void @test28b(
-; CHECK: call i8* @objc_retain(
+; CHECK: call i8* @llvm.objc.retain
; CHECK: true:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: call void @callee()
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: store
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: done:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test28b(i8* %p, i1 %x, i8* noalias %t) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1511,7 +1511,7 @@ true:
done:
store i8 0, i8* %t
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
@@ -1519,18 +1519,18 @@ done:
; unrelated memory references! And preserve the metadata.
; CHECK-LABEL: define void @test28c(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: true:
-; CHECK: call i8* @objc_retain(
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: store
-; CHECK: call void @objc_release(i8* %p) [[NUW]], !clang.imprecise_release
+; CHECK: call void @llvm.objc.release(i8* %p) [[NUW]], !clang.imprecise_release
; CHECK: done:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test28c(i8* %p, i1 %x, i8* noalias %t) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1540,28 +1540,28 @@ true:
done:
store i8 0, i8* %t
- call void @objc_release(i8* %p), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
ret void
}
; Like test28. but with two releases.
; CHECK-LABEL: define void @test29(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: true:
-; CHECK: call i8* @objc_retain(
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: store
-; CHECK: call void @objc_release
-; CHECK-NOT: @objc_release
+; CHECK: call void @llvm.objc.release
+; CHECK-NOT: @llvm.objc.release
; CHECK: done:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: ohno:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test29(i8* %p, i1 %x, i1 %y) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1570,11 +1570,11 @@ true:
br i1 %y, label %done, label %ohno
done:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
ohno:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
@@ -1582,23 +1582,23 @@ ohno:
; with an extra release.
; CHECK-LABEL: define void @test30(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: true:
-; CHECK: call i8* @objc_retain(
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: store
-; CHECK: call void @objc_release
-; CHECK-NOT: @objc_release
+; CHECK: call void @llvm.objc.release
+; CHECK-NOT: @llvm.objc.release
; CHECK: false:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: done:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: ohno:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test30(i8* %p, i1 %x, i1 %y, i1 %z) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %false
true:
@@ -1610,58 +1610,58 @@ false:
br i1 %z, label %done, label %ohno
done:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
ohno:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; Basic case with a mergeable release.
; CHECK-LABEL: define void @test31(
-; CHECK: call i8* @objc_retain(i8* %p)
+; CHECK: call i8* @llvm.objc.retain(i8* %p)
; CHECK: call void @callee()
; CHECK: store
-; CHECK: call void @objc_release
-; CHECK-NOT: @objc_release
+; CHECK: call void @llvm.objc.release
+; CHECK-NOT: @llvm.objc.release
; CHECK: true:
-; CHECK-NOT: @objc_release
+; CHECK-NOT: @llvm.objc.release
; CHECK: false:
-; CHECK-NOT: @objc_release
+; CHECK-NOT: @llvm.objc.release
; CHECK: ret void
-; CHECK-NOT: @objc_release
+; CHECK-NOT: @llvm.objc.release
; CHECK: }
define void @test31(i8* %p, i1 %x) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
call void @callee()
store i8 0, i8* %p
br i1 %x, label %true, label %false
true:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
false:
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; Don't consider bitcasts or getelementptrs direct uses.
; CHECK-LABEL: define void @test32(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: true:
-; CHECK: call i8* @objc_retain(
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: store
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: done:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test32(i8* %p, i1 %x) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1672,25 +1672,25 @@ true:
done:
%g = bitcast i8* %p to i8*
%h = getelementptr i8, i8* %g, i64 0
- call void @objc_release(i8* %g)
+ call void @llvm.objc.release(i8* %g)
ret void
}
; Do consider icmps to be direct uses.
; CHECK-LABEL: define void @test33(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: true:
-; CHECK: call i8* @objc_retain(
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: icmp
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: done:
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test33(i8* %p, i1 %x, i8* %y) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1701,7 +1701,7 @@ true:
done:
%g = bitcast i8* %p to i8*
%h = getelementptr i8, i8* %g, i64 0
- call void @objc_release(i8* %g)
+ call void @llvm.objc.release(i8* %g)
ret void
}
@@ -1709,14 +1709,14 @@ done:
; releases.
; CHECK-LABEL: define void @test34a(
-; CHECK: call i8* @objc_retain
+; CHECK: call i8* @llvm.objc.retain
; CHECK: true:
; CHECK: done:
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: }
define void @test34a(i8* %p, i1 %x, i8* %y) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1726,16 +1726,16 @@ true:
done:
%g = bitcast i8* %p to i8*
%h = getelementptr i8, i8* %g, i64 0
- call void @objc_release(i8* %g)
+ call void @llvm.objc.release(i8* %g)
ret void
}
; CHECK-LABEL: define void @test34b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test34b(i8* %p, i1 %x, i8* %y) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1745,7 +1745,7 @@ true:
done:
%g = bitcast i8* %p to i8*
%h = getelementptr i8, i8* %g, i64 0
- call void @objc_release(i8* %g), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %g), !clang.imprecise_release !0
ret void
}
@@ -1756,14 +1756,14 @@ done:
; Precise.
; CHECK-LABEL: define void @test35a(
; CHECK: entry:
-; CHECK: call i8* @objc_retain
+; CHECK: call i8* @llvm.objc.retain
; CHECK: true:
; CHECK: done:
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: }
define void @test35a(i8* %p, i1 %x, i8* %y) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1773,17 +1773,17 @@ true:
done:
%g = bitcast i8* %p to i8*
%h = getelementptr i8, i8* %g, i64 0
- call void @objc_release(i8* %g)
+ call void @llvm.objc.release(i8* %g)
ret void
}
; Imprecise.
; CHECK-LABEL: define void @test35b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test35b(i8* %p, i1 %x, i8* %y) {
entry:
- %f0 = call i8* @objc_retain(i8* %p)
+ %f0 = call i8* @llvm.objc.retain(i8* %p)
br i1 %x, label %true, label %done
true:
@@ -1793,50 +1793,50 @@ true:
done:
%g = bitcast i8* %p to i8*
%h = getelementptr i8, i8* %g, i64 0
- call void @objc_release(i8* %g), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %g), !clang.imprecise_release !0
ret void
}
; Delete a retain,release if there's no actual use and we have precise release.
; CHECK-LABEL: define void @test36a(
-; CHECK: @objc_retain
+; CHECK: @llvm.objc.retain
; CHECK: call void @callee()
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: call void @callee()
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
; CHECK: }
define void @test36a(i8* %p) {
entry:
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @callee()
call void @callee()
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; Like test36, but with metadata.
; CHECK-LABEL: define void @test36b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test36b(i8* %p) {
entry:
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @callee()
call void @callee()
- call void @objc_release(i8* %p), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
ret void
}
; Be aggressive about analyzing phis to eliminate possible uses.
; CHECK-LABEL: define void @test38(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test38(i8* %p, i1 %u, i1 %m, i8* %z, i8* %y, i8* %x, i8* %w) {
entry:
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
br i1 %u, label %true, label %false
true:
br i1 %m, label %a, label %b
@@ -1859,36 +1859,36 @@ f:
g:
%h = phi i8* [ %j, %e ], [ %k, %f ]
call void @use_pointer(i8* %h)
- call void @objc_release(i8* %p), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
ret void
}
; Delete retain,release pairs around loops.
; CHECK-LABEL: define void @test39(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test39(i8* %p) {
entry:
- %0 = call i8* @objc_retain(i8* %p)
+ %0 = call i8* @llvm.objc.retain(i8* %p)
br label %loop
loop: ; preds = %loop, %entry
br i1 undef, label %loop, label %exit
exit: ; preds = %loop
- call void @objc_release(i8* %0), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
ret void
}
; Delete retain,release pairs around loops containing uses.
; CHECK-LABEL: define void @test39b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test39b(i8* %p) {
entry:
- %0 = call i8* @objc_retain(i8* %p)
+ %0 = call i8* @llvm.objc.retain(i8* %p)
br label %loop
loop: ; preds = %loop, %entry
@@ -1896,18 +1896,18 @@ loop: ; preds = %loop, %entry
br i1 undef, label %loop, label %exit
exit: ; preds = %loop
- call void @objc_release(i8* %0), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
ret void
}
; Delete retain,release pairs around loops containing potential decrements.
; CHECK-LABEL: define void @test39c(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test39c(i8* %p) {
entry:
- %0 = call i8* @objc_retain(i8* %p)
+ %0 = call i8* @llvm.objc.retain(i8* %p)
br label %loop
loop: ; preds = %loop, %entry
@@ -1915,7 +1915,7 @@ loop: ; preds = %loop, %entry
br i1 undef, label %loop, label %exit
exit: ; preds = %loop
- call void @objc_release(i8* %0), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
ret void
}
@@ -1923,11 +1923,11 @@ exit: ; preds = %loop
; the successors are in a different order.
; CHECK-LABEL: define void @test40(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test40(i8* %p) {
entry:
- %0 = call i8* @objc_retain(i8* %p)
+ %0 = call i8* @llvm.objc.retain(i8* %p)
br label %loop
loop: ; preds = %loop, %entry
@@ -1935,7 +1935,7 @@ loop: ; preds = %loop, %entry
br i1 undef, label %exit, label %loop
exit: ; preds = %loop
- call void @objc_release(i8* %0), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
ret void
}
@@ -1944,26 +1944,26 @@ exit: ; preds = %loop
; CHECK-LABEL: define void @test42(
; CHECK-NEXT: entry:
-; CHECK-NEXT: call i8* @objc_retain(i8* %p)
-; CHECK-NEXT: call i8* @objc_autorelease(i8* %p)
+; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p)
+; CHECK-NEXT: call i8* @llvm.objc.autorelease(i8* %p)
; CHECK-NEXT: call void @use_pointer(i8* %p)
; CHECK-NEXT: call void @use_pointer(i8* %p)
; CHECK-NEXT: call void @use_pointer(i8* %p)
; CHECK-NEXT: call void @use_pointer(i8* %p)
-; CHECK-NEXT: call void @objc_release(i8* %p)
+; CHECK-NEXT: call void @llvm.objc.release(i8* %p)
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test42(i8* %p) {
entry:
- call i8* @objc_retain(i8* %p)
- call i8* @objc_autorelease(i8* %p)
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
+ call i8* @llvm.objc.autorelease(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @use_pointer(i8* %p)
call void @use_pointer(i8* %p)
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
call void @use_pointer(i8* %p)
call void @use_pointer(i8* %p)
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
@@ -1972,24 +1972,24 @@ entry:
; CHECK-LABEL: define void @test43(
; CHECK-NEXT: entry:
-; CHECK-NEXT: call i8* @objc_retain(i8* %p)
-; CHECK-NEXT: call i8* @objc_autorelease(i8* %p)
-; CHECK-NEXT: call i8* @objc_retain
+; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p)
+; CHECK-NEXT: call i8* @llvm.objc.autorelease(i8* %p)
+; CHECK-NEXT: call i8* @llvm.objc.retain
; CHECK-NEXT: call void @use_pointer(i8* %p)
; CHECK-NEXT: call void @use_pointer(i8* %p)
-; CHECK-NEXT: call void @objc_autoreleasePoolPop(i8* undef)
-; CHECK-NEXT: call void @objc_release
+; CHECK-NEXT: call void @llvm.objc.autoreleasePoolPop(i8* undef)
+; CHECK-NEXT: call void @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test43(i8* %p) {
entry:
- call i8* @objc_retain(i8* %p)
- call i8* @objc_autorelease(i8* %p)
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
+ call i8* @llvm.objc.autorelease(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @use_pointer(i8* %p)
call void @use_pointer(i8* %p)
- call void @objc_autoreleasePoolPop(i8* undef)
- call void @objc_release(i8* %p)
+ call void @llvm.objc.autoreleasePoolPop(i8* undef)
+ call void @llvm.objc.release(i8* %p)
ret void
}
@@ -1998,74 +1998,74 @@ entry:
; CHECK-LABEL: define void @test43b(
; CHECK-NEXT: entry:
-; CHECK-NEXT: call i8* @objc_retain(i8* %p)
-; CHECK-NEXT: call i8* @objc_autorelease(i8* %p)
+; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p)
+; CHECK-NEXT: call i8* @llvm.objc.autorelease(i8* %p)
; CHECK-NEXT: call void @use_pointer(i8* %p)
; CHECK-NEXT: call void @use_pointer(i8* %p)
-; CHECK-NEXT: call i8* @objc_autoreleasePoolPush()
+; CHECK-NEXT: call i8* @llvm.objc.autoreleasePoolPush()
; CHECK-NEXT: call void @use_pointer(i8* %p)
-; CHECK-NEXT: call void @objc_release
+; CHECK-NEXT: call void @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test43b(i8* %p) {
entry:
- call i8* @objc_retain(i8* %p)
- call i8* @objc_autorelease(i8* %p)
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
+ call i8* @llvm.objc.autorelease(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @use_pointer(i8* %p)
call void @use_pointer(i8* %p)
- call i8* @objc_autoreleasePoolPush()
- call void @objc_release(i8* %p)
+ call i8* @llvm.objc.autoreleasePoolPush()
+ call void @llvm.objc.release(i8* %p)
call void @use_pointer(i8* %p)
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; Do retain+release elimination for non-provenance pointers.
; CHECK-LABEL: define void @test44(
-; CHECK-NOT: objc_
+; CHECK-NOT: llvm.objc.
; CHECK: }
define void @test44(i8** %pp) {
%p = load i8*, i8** %pp
- %q = call i8* @objc_retain(i8* %p)
- call void @objc_release(i8* %q)
+ %q = call i8* @llvm.objc.retain(i8* %p)
+ call void @llvm.objc.release(i8* %q)
ret void
}
; Don't delete retain+release with an unknown-provenance
-; may-alias objc_release between them.
+; may-alias llvm.objc.release between them.
; CHECK-LABEL: define void @test45(
-; CHECK: call i8* @objc_retain(i8* %p)
-; CHECK: call void @objc_release(i8* %q)
+; CHECK: call i8* @llvm.objc.retain(i8* %p)
+; CHECK: call void @llvm.objc.release(i8* %q)
; CHECK: call void @use_pointer(i8* %p)
-; CHECK: call void @objc_release(i8* %p)
+; CHECK: call void @llvm.objc.release(i8* %p)
; CHECK: }
define void @test45(i8** %pp, i8** %qq) {
%p = load i8*, i8** %pp
%q = load i8*, i8** %qq
- call i8* @objc_retain(i8* %p)
- call void @objc_release(i8* %q)
+ call i8* @llvm.objc.retain(i8* %p)
+ call void @llvm.objc.release(i8* %q)
call void @use_pointer(i8* %p)
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; Don't delete retain and autorelease here.
; CHECK-LABEL: define void @test46(
-; CHECK: tail call i8* @objc_retain(i8* %p) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %p) [[NUW]]
; CHECK: true:
-; CHECK: call i8* @objc_autorelease(i8* %p) [[NUW]]
+; CHECK: call i8* @llvm.objc.autorelease(i8* %p) [[NUW]]
; CHECK: }
define void @test46(i8* %p, i1 %a) {
entry:
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
br i1 %a, label %true, label %false
true:
- call i8* @objc_autorelease(i8* %p)
+ call i8* @llvm.objc.autorelease(i8* %p)
call void @use_pointer(i8* %p)
ret void
@@ -2080,7 +2080,7 @@ false:
; CHECK: ret i8* %p
; CHECK: }
define i8* @test47(i8* %p) nounwind {
- %x = call i8* @objc_retainedObject(i8* %p)
+ %x = call i8* @llvm.objc.retainedObject(i8* %p)
ret i8* %x
}
@@ -2091,7 +2091,7 @@ define i8* @test47(i8* %p) nounwind {
; CHECK: ret i8* %p
; CHECK: }
define i8* @test48(i8* %p) nounwind {
- %x = call i8* @objc_unretainedObject(i8* %p)
+ %x = call i8* @llvm.objc.unretainedObject(i8* %p)
ret i8* %x
}
@@ -2102,36 +2102,36 @@ define i8* @test48(i8* %p) nounwind {
; CHECK: ret i8* %p
; CHECK: }
define i8* @test49(i8* %p) nounwind {
- %x = call i8* @objc_unretainedPointer(i8* %p)
+ %x = call i8* @llvm.objc.unretainedPointer(i8* %p)
ret i8* %x
}
; Do delete retain+release with intervening stores of the address value if we
-; have imprecise release attached to objc_release.
+; have imprecise release attached to llvm.objc.release.
; CHECK-LABEL: define void @test50a(
-; CHECK-NEXT: call i8* @objc_retain
+; CHECK-NEXT: call i8* @llvm.objc.retain
; CHECK-NEXT: call void @callee
; CHECK-NEXT: store
-; CHECK-NEXT: call void @objc_release
+; CHECK-NEXT: call void @llvm.objc.release
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test50a(i8* %p, i8** %pp) {
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @callee()
store i8* %p, i8** %pp
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; CHECK-LABEL: define void @test50b(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test50b(i8* %p, i8** %pp) {
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @callee()
store i8* %p, i8** %pp
- call void @objc_release(i8* %p), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
ret void
}
@@ -2140,28 +2140,28 @@ define void @test50b(i8* %p, i8** %pp) {
; address value.
; CHECK-LABEL: define void @test51a(
-; CHECK: call i8* @objc_retain(i8* %p)
-; CHECK: call void @objc_release(i8* %p)
+; CHECK: call i8* @llvm.objc.retain(i8* %p)
+; CHECK: call void @llvm.objc.release(i8* %p)
; CHECK: ret void
; CHECK: }
define void @test51a(i8* %p) {
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @callee()
store i8 0, i8* %p
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; CHECK-LABEL: define void @test51b(
-; CHECK: call i8* @objc_retain(i8* %p)
-; CHECK: call void @objc_release(i8* %p)
+; CHECK: call i8* @llvm.objc.retain(i8* %p)
+; CHECK: call void @llvm.objc.release(i8* %p)
; CHECK: ret void
; CHECK: }
define void @test51b(i8* %p) {
- call i8* @objc_retain(i8* %p)
+ call i8* @llvm.objc.retain(i8* %p)
call void @callee()
store i8 0, i8* %p
- call void @objc_release(i8* %p), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
ret void
}
@@ -2169,36 +2169,36 @@ define void @test51b(i8* %p) {
; unknown provenance.
; CHECK-LABEL: define void @test52a(
-; CHECK: call i8* @objc_retain
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: call void @use_pointer(i8* %z)
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: ret void
; CHECK: }
define void @test52a(i8** %zz, i8** %pp) {
%p = load i8*, i8** %pp
- %1 = call i8* @objc_retain(i8* %p)
+ %1 = call i8* @llvm.objc.retain(i8* %p)
call void @callee()
%z = load i8*, i8** %zz
call void @use_pointer(i8* %z)
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
; CHECK-LABEL: define void @test52b(
-; CHECK: call i8* @objc_retain
+; CHECK: call i8* @llvm.objc.retain
; CHECK: call void @callee()
; CHECK: call void @use_pointer(i8* %z)
-; CHECK: call void @objc_release
+; CHECK: call void @llvm.objc.release
; CHECK: ret void
; CHECK: }
define void @test52b(i8** %zz, i8** %pp) {
%p = load i8*, i8** %pp
- %1 = call i8* @objc_retain(i8* %p)
+ %1 = call i8* @llvm.objc.retain(i8* %p)
call void @callee()
%z = load i8*, i8** %zz
call void @use_pointer(i8* %z)
- call void @objc_release(i8* %p), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
ret void
}
@@ -2208,15 +2208,15 @@ define void @test52b(i8** %zz, i8** %pp) {
; See rdar://10551239.
; CHECK-LABEL: define void @test53(
-; CHECK: @objc_
+; CHECK: @llvm.objc.
; CHECK: }
define void @test53(void ()** %zz, i8** %pp) {
%p = load i8*, i8** %pp
- %1 = call i8* @objc_retain(i8* %p)
+ %1 = call i8* @llvm.objc.retain(i8* %p)
call void @callee()
%z = load void ()*, void ()** %zz
call void @callee_fnptr(void ()* %z)
- call void @objc_release(i8* %p)
+ call void @llvm.objc.release(i8* %p)
ret void
}
@@ -2224,12 +2224,12 @@ define void @test53(void ()** %zz, i8** %pp) {
; CHECK-LABEL: define void @test54(
; CHECK: call i8* @returner()
-; CHECK-NEXT: call void @objc_release(i8* %t) [[NUW]], !clang.imprecise_release ![[RELEASE]]
+; CHECK-NEXT: call void @llvm.objc.release(i8* %t) [[NUW]], !clang.imprecise_release ![[RELEASE]]
; CHECK-NEXT: ret void
; CHECK: }
define void @test54() {
%t = call i8* @returner()
- call i8* @objc_autorelease(i8* %t)
+ call i8* @llvm.objc.autorelease(i8* %t)
ret void
}
@@ -2240,10 +2240,10 @@ define void @test54() {
; CHECK: }
define void @test55(i8* %x) {
entry:
- %0 = call i8* @objc_retain(i8* %x) nounwind
- %1 = call i8* @objc_retain(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind
+ %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
+ %1 = call i8* @llvm.objc.retain(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -2255,30 +2255,30 @@ entry:
; CHECK-LABEL: define void @test56(
; CHECK-NOT: @objc
; CHECK: if.then:
-; CHECK-NEXT: %0 = tail call i8* @objc_retain(i8* %x) [[NUW]]
+; CHECK-NEXT: %0 = tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
; CHECK-NEXT: tail call void @use_pointer(i8* %x)
; CHECK-NEXT: tail call void @use_pointer(i8* %x)
-; CHECK-NEXT: tail call void @objc_release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEASE]]
+; CHECK-NEXT: tail call void @llvm.objc.release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEASE]]
; CHECK-NEXT: br label %if.end
; CHECK-NOT: @objc
; CHECK: }
define void @test56(i8* %x, i32 %n) {
entry:
- %0 = tail call i8* @objc_retain(i8* %x) nounwind
- %1 = tail call i8* @objc_retain(i8* %0) nounwind
+ %0 = tail call i8* @llvm.objc.retain(i8* %x) nounwind
+ %1 = tail call i8* @llvm.objc.retain(i8* %0) nounwind
%tobool = icmp eq i32 %n, 0
br i1 %tobool, label %if.end, label %if.then
if.then: ; preds = %entry
- %2 = tail call i8* @objc_retain(i8* %1) nounwind
+ %2 = tail call i8* @llvm.objc.retain(i8* %1) nounwind
tail call void @use_pointer(i8* %2)
tail call void @use_pointer(i8* %2)
- tail call void @objc_release(i8* %2) nounwind, !clang.imprecise_release !0
+ tail call void @llvm.objc.release(i8* %2) nounwind, !clang.imprecise_release !0
br label %if.end
if.end: ; preds = %entry, %if.then
- tail call void @objc_release(i8* %1) nounwind, !clang.imprecise_release !0
- tail call void @objc_release(i8* %0) nounwind, !clang.imprecise_release !0
+ tail call void @llvm.objc.release(i8* %1) nounwind, !clang.imprecise_release !0
+ tail call void @llvm.objc.release(i8* %0) nounwind, !clang.imprecise_release !0
ret void
}
@@ -2288,26 +2288,26 @@ if.end: ; preds = %entry, %if.then
; CHECK-LABEL: define void @test57(
; CHECK-NEXT: entry:
-; CHECK-NEXT: tail call i8* @objc_retain(i8* %x) [[NUW]]
+; CHECK-NEXT: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
; CHECK-NEXT: call void @use_pointer(i8* %x)
; CHECK-NEXT: call void @use_pointer(i8* %x)
-; CHECK-NEXT: tail call i8* @objc_retain(i8* %x) [[NUW]]
+; CHECK-NEXT: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
; CHECK-NEXT: call void @use_pointer(i8* %x)
; CHECK-NEXT: call void @use_pointer(i8* %x)
-; CHECK-NEXT: call void @objc_release(i8* %x) [[NUW]]
+; CHECK-NEXT: call void @llvm.objc.release(i8* %x) [[NUW]]
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test57(i8* %x) nounwind {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
- call i8* @objc_retain(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -2316,20 +2316,20 @@ entry:
; CHECK-LABEL: define void @test58(
; CHECK-NEXT: entry:
-; CHECK-NEXT: @objc_retain
+; CHECK-NEXT: @llvm.objc.retain
; CHECK-NEXT: call void @use_pointer(i8* %x)
; CHECK-NEXT: call void @use_pointer(i8* %x)
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test58(i8* %x) nounwind {
entry:
- call i8* @objc_retain(i8* %x) nounwind
- call i8* @objc_retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
- call i8* @objc_retain(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
+ call i8* @llvm.objc.retain(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -2337,20 +2337,20 @@ entry:
; CHECK-LABEL: define void @test59(
; CHECK-NEXT: entry:
-; CHECK-NEXT: %0 = tail call i8* @objc_retain(i8* %x) [[NUW]]
+; CHECK-NEXT: %0 = tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
; CHECK-NEXT: call void @use_pointer(i8* %x)
; CHECK-NEXT: call void @use_pointer(i8* %x)
-; CHECK-NEXT: call void @objc_release(i8* %x) [[NUW]]
+; CHECK-NEXT: call void @llvm.objc.release(i8* %x) [[NUW]]
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test59(i8* %x) nounwind {
entry:
- %a = call i8* @objc_retain(i8* %x) nounwind
- call void @objc_release(i8* %x) nounwind
- %b = call i8* @objc_retain(i8* %x) nounwind
+ %a = call i8* @llvm.objc.retain(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
+ %b = call i8* @llvm.objc.retain(i8* %x) nounwind
call void @use_pointer(i8* %x)
call void @use_pointer(i8* %x)
- call void @objc_release(i8* %x) nounwind
+ call void @llvm.objc.release(i8* %x) nounwind
ret void
}
@@ -2363,71 +2363,71 @@ entry:
; @something is not constant.
; CHECK-LABEL: define void @test60a(
-; CHECK: call i8* @objc_retain
-; CHECK: call void @objc_release
+; CHECK: call i8* @llvm.objc.retain
+; CHECK: call void @llvm.objc.release
; CHECK: }
define void @test60a() {
%t = load i8*, i8** @constptr
%s = load i8*, i8** @something
- call i8* @objc_retain(i8* %s)
+ call i8* @llvm.objc.retain(i8* %s)
call void @callee()
call void @use_pointer(i8* %t)
- call void @objc_release(i8* %s)
+ call void @llvm.objc.release(i8* %s)
ret void
}
; CHECK-LABEL: define void @test60b(
-; CHECK: call i8* @objc_retain
-; CHECK-NOT: call i8* @objc_retain
-; CHECK-NOT: call i8* @objc_release
+; CHECK: call i8* @llvm.objc.retain
+; CHECK-NOT: call i8* @llvm.objc.retain
+; CHECK-NOT: call i8* @llvm.objc.release
; CHECK: }
define void @test60b() {
%t = load i8*, i8** @constptr
%s = load i8*, i8** @something
- call i8* @objc_retain(i8* %t)
- call i8* @objc_retain(i8* %t)
+ call i8* @llvm.objc.retain(i8* %t)
+ call i8* @llvm.objc.retain(i8* %t)
call void @callee()
call void @use_pointer(i8* %s)
- call void @objc_release(i8* %t)
+ call void @llvm.objc.release(i8* %t)
ret void
}
; CHECK-LABEL: define void @test60c(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test60c() {
%t = load i8*, i8** @constptr
%s = load i8*, i8** @something
- call i8* @objc_retain(i8* %t)
+ call i8* @llvm.objc.retain(i8* %t)
call void @callee()
call void @use_pointer(i8* %s)
- call void @objc_release(i8* %t), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %t), !clang.imprecise_release !0
ret void
}
; CHECK-LABEL: define void @test60d(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test60d() {
%t = load i8*, i8** @constptr
%s = load i8*, i8** @something
- call i8* @objc_retain(i8* %t)
+ call i8* @llvm.objc.retain(i8* %t)
call void @callee()
call void @use_pointer(i8* %s)
- call void @objc_release(i8* %t)
+ call void @llvm.objc.release(i8* %t)
ret void
}
; CHECK-LABEL: define void @test60e(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test60e() {
%t = load i8*, i8** @constptr
%s = load i8*, i8** @something
- call i8* @objc_retain(i8* %t)
+ call i8* @llvm.objc.retain(i8* %t)
call void @callee()
call void @use_pointer(i8* %s)
- call void @objc_release(i8* %t), !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %t), !clang.imprecise_release !0
ret void
}
@@ -2435,14 +2435,14 @@ define void @test60e() {
; pointers.
; CHECK-LABEL: define void @test61(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test61() {
%t = load i8*, i8** @constptr
- call i8* @objc_retain(i8* %t)
+ call i8* @llvm.objc.retain(i8* %t)
call void @callee()
call void @use_pointer(i8* %t)
- call void @objc_release(i8* %t)
+ call void @llvm.objc.release(i8* %t)
ret void
}
@@ -2450,23 +2450,23 @@ define void @test61() {
; other is outside the loop.
; CHECK-LABEL: define void @test62(
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define void @test62(i8* %x, i1* %p) nounwind {
entry:
br label %loop
loop:
- call i8* @objc_retain(i8* %x)
+ call i8* @llvm.objc.retain(i8* %x)
%q = load i1, i1* %p
br i1 %q, label %loop.more, label %exit
loop.more:
- call void @objc_release(i8* %x)
+ call void @llvm.objc.release(i8* %x)
br label %loop
exit:
- call void @objc_release(i8* %x)
+ call void @llvm.objc.release(i8* %x)
ret void
}
@@ -2475,21 +2475,21 @@ exit:
; CHECK-LABEL: define void @test63(
; CHECK: loop:
-; CHECK: tail call i8* @objc_retain(i8* %x)
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x)
; CHECK: loop.more:
-; CHECK: call void @objc_release(i8* %x)
+; CHECK: call void @llvm.objc.release(i8* %x)
; CHECK: }
define void @test63(i8* %x, i1* %p) nounwind {
entry:
br label %loop
loop:
- call i8* @objc_retain(i8* %x)
+ call i8* @llvm.objc.retain(i8* %x)
%q = load i1, i1* %p
br i1 %q, label %loop.more, label %exit
loop.more:
- call void @objc_release(i8* %x)
+ call void @llvm.objc.release(i8* %x)
br label %loop
exit:
@@ -2501,16 +2501,16 @@ exit:
; CHECK-LABEL: define void @test64(
; CHECK: loop:
-; CHECK: tail call i8* @objc_retain(i8* %x)
+; CHECK: tail call i8* @llvm.objc.retain(i8* %x)
; CHECK: exit:
-; CHECK: call void @objc_release(i8* %x)
+; CHECK: call void @llvm.objc.release(i8* %x)
; CHECK: }
define void @test64(i8* %x, i1* %p) nounwind {
entry:
br label %loop
loop:
- call i8* @objc_retain(i8* %x)
+ call i8* @llvm.objc.retain(i8* %x)
%q = load i1, i1* %p
br i1 %q, label %loop.more, label %exit
@@ -2518,7 +2518,7 @@ loop.more:
br label %loop
exit:
- call void @objc_release(i8* %x)
+ call void @llvm.objc.release(i8* %x)
ret void
}
@@ -2526,9 +2526,9 @@ exit:
; CHECK-LABEL: define i8* @test65(
; CHECK: if.then:
-; CHECK: call i8* @objc_autorelease(
+; CHECK: call i8* @llvm.objc.autorelease(
; CHECK: return:
-; CHECK-NOT: @objc_autorelease
+; CHECK-NOT: @llvm.objc.autorelease
; CHECK: }
define i8* @test65(i1 %x) {
entry:
@@ -2536,12 +2536,12 @@ entry:
if.then: ; preds = %entry
%c = call i8* @returner()
- %s = call i8* @objc_retainAutoreleasedReturnValue(i8* %c) nounwind
+ %s = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %c) nounwind
br label %return
return: ; preds = %if.then, %entry
%retval = phi i8* [ %s, %if.then ], [ null, %entry ]
- %q = call i8* @objc_autorelease(i8* %retval) nounwind
+ %q = call i8* @llvm.objc.autorelease(i8* %retval) nounwind
ret i8* %retval
}
@@ -2549,24 +2549,24 @@ return: ; preds = %if.then, %entry
; CHECK-LABEL: define i8* @test65b(
; CHECK: if.then:
-; CHECK-NOT: @objc_autorelease
+; CHECK-NOT: @llvm.objc.autorelease
; CHECK: return:
-; CHECK: call i8* @objc_autorelease(
+; CHECK: call i8* @llvm.objc.autorelease(
; CHECK: }
define i8* @test65b(i1 %x) {
entry:
- %t = call i8* @objc_autoreleasePoolPush()
+ %t = call i8* @llvm.objc.autoreleasePoolPush()
br i1 %x, label %return, label %if.then
if.then: ; preds = %entry
%c = call i8* @returner()
- %s = call i8* @objc_retainAutoreleasedReturnValue(i8* %c) nounwind
+ %s = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %c) nounwind
br label %return
return: ; preds = %if.then, %entry
%retval = phi i8* [ %s, %if.then ], [ null, %entry ]
- call void @objc_autoreleasePoolPop(i8* %t)
- %q = call i8* @objc_autorelease(i8* %retval) nounwind
+ call void @llvm.objc.autoreleasePoolPop(i8* %t)
+ %q = call i8* @llvm.objc.autorelease(i8* %retval) nounwind
ret i8* %retval
}
@@ -2575,9 +2575,9 @@ return: ; preds = %if.then, %entry
; CHECK-LABEL: define i8* @test65c(
; CHECK: if.then:
-; CHECK-NOT: @objc_autorelease
+; CHECK-NOT: @llvm.objc.autorelease
; CHECK: return:
-; CHECK: call i8* @objc_autoreleaseReturnValue(
+; CHECK: call i8* @llvm.objc.autoreleaseReturnValue(
; CHECK: }
define i8* @test65c(i1 %x) {
entry:
@@ -2585,20 +2585,20 @@ entry:
if.then: ; preds = %entry
%c = call i8* @returner()
- %s = call i8* @objc_retainAutoreleasedReturnValue(i8* %c) nounwind
+ %s = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %c) nounwind
br label %return
return: ; preds = %if.then, %entry
%retval = phi i8* [ %s, %if.then ], [ null, %entry ]
- %q = call i8* @objc_autoreleaseReturnValue(i8* %retval) nounwind
+ %q = call i8* @llvm.objc.autoreleaseReturnValue(i8* %retval) nounwind
ret i8* %retval
}
; CHECK-LABEL: define i8* @test65d(
; CHECK: if.then:
-; CHECK-NOT: @objc_autorelease
+; CHECK-NOT: @llvm.objc.autorelease
; CHECK: return:
-; CHECK: call i8* @objc_autoreleaseReturnValue(
+; CHECK: call i8* @llvm.objc.autoreleaseReturnValue(
; CHECK: }
define i8* @test65d(i1 %x) {
entry:
@@ -2606,23 +2606,23 @@ entry:
if.then: ; preds = %entry
%c = call i8* @returner()
- %s = call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* %c) nounwind
+ %s = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* %c) nounwind
br label %return
return: ; preds = %if.then, %entry
%retval = phi i8* [ %s, %if.then ], [ null, %entry ]
- %q = call i8* @objc_autoreleaseReturnValue(i8* %retval) nounwind
+ %q = call i8* @llvm.objc.autoreleaseReturnValue(i8* %retval) nounwind
ret i8* %retval
}
-; An objc_retain can serve as a may-use for a different pointer.
+; An llvm.objc.retain can serve as a may-use for a different pointer.
; rdar://11931823
; CHECK-LABEL: define void @test66a(
-; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %call) [[NUW]]
-; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %cond) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
; CHECK: }
define void @test66a(i8* %tmp5, i8* %bar, i1 %tobool, i1 %tobool1, i8* %call) {
entry:
@@ -2633,19 +2633,19 @@ cond.true:
cond.end: ; preds = %cond.true, %entry
%cond = phi i8* [ %tmp5, %cond.true ], [ %call, %entry ]
- %tmp7 = tail call i8* @objc_retain(i8* %cond) nounwind
- tail call void @objc_release(i8* %call) nounwind
+ %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
+ tail call void @llvm.objc.release(i8* %call) nounwind
%tmp8 = select i1 %tobool1, i8* %cond, i8* %bar
- %tmp9 = tail call i8* @objc_retain(i8* %tmp8) nounwind
- tail call void @objc_release(i8* %cond) nounwind
+ %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind
+ tail call void @llvm.objc.release(i8* %cond) nounwind
ret void
}
; CHECK-LABEL: define void @test66b(
-; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %call) [[NUW]]
-; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %cond) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
; CHECK: }
define void @test66b(i8* %tmp5, i8* %bar, i1 %tobool, i1 %tobool1, i8* %call) {
entry:
@@ -2656,19 +2656,19 @@ cond.true:
cond.end: ; preds = %cond.true, %entry
%cond = phi i8* [ %tmp5, %cond.true ], [ %call, %entry ]
- %tmp7 = tail call i8* @objc_retain(i8* %cond) nounwind
- tail call void @objc_release(i8* %call) nounwind, !clang.imprecise_release !0
+ %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
+ tail call void @llvm.objc.release(i8* %call) nounwind, !clang.imprecise_release !0
%tmp8 = select i1 %tobool1, i8* %cond, i8* %bar
- %tmp9 = tail call i8* @objc_retain(i8* %tmp8) nounwind
- tail call void @objc_release(i8* %cond) nounwind
+ %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind
+ tail call void @llvm.objc.release(i8* %cond) nounwind
ret void
}
; CHECK-LABEL: define void @test66c(
-; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %call) [[NUW]]
-; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %cond) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
; CHECK: }
define void @test66c(i8* %tmp5, i8* %bar, i1 %tobool, i1 %tobool1, i8* %call) {
entry:
@@ -2679,19 +2679,19 @@ cond.true:
cond.end: ; preds = %cond.true, %entry
%cond = phi i8* [ %tmp5, %cond.true ], [ %call, %entry ]
- %tmp7 = tail call i8* @objc_retain(i8* %cond) nounwind
- tail call void @objc_release(i8* %call) nounwind
+ %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
+ tail call void @llvm.objc.release(i8* %call) nounwind
%tmp8 = select i1 %tobool1, i8* %cond, i8* %bar
- %tmp9 = tail call i8* @objc_retain(i8* %tmp8) nounwind, !clang.imprecise_release !0
- tail call void @objc_release(i8* %cond) nounwind
+ %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind, !clang.imprecise_release !0
+ tail call void @llvm.objc.release(i8* %cond) nounwind
ret void
}
; CHECK-LABEL: define void @test66d(
-; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %call) [[NUW]]
-; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]]
-; CHECK: tail call void @objc_release(i8* %cond) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
+; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
+; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
; CHECK: }
define void @test66d(i8* %tmp5, i8* %bar, i1 %tobool, i1 %tobool1, i8* %call) {
entry:
@@ -2702,11 +2702,11 @@ cond.true:
cond.end: ; preds = %cond.true, %entry
%cond = phi i8* [ %tmp5, %cond.true ], [ %call, %entry ]
- %tmp7 = tail call i8* @objc_retain(i8* %cond) nounwind
- tail call void @objc_release(i8* %call) nounwind, !clang.imprecise_release !0
+ %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
+ tail call void @llvm.objc.release(i8* %call) nounwind, !clang.imprecise_release !0
%tmp8 = select i1 %tobool1, i8* %cond, i8* %bar
- %tmp9 = tail call i8* @objc_retain(i8* %tmp8) nounwind
- tail call void @objc_release(i8* %cond) nounwind, !clang.imprecise_release !0
+ %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind
+ tail call void @llvm.objc.release(i8* %cond) nounwind, !clang.imprecise_release !0
ret void
}
@@ -2719,13 +2719,13 @@ declare i32 @puts(i8* nocapture) nounwind
@str = internal constant [16 x i8] c"-[ Top0 _getX ]\00"
; CHECK: define { <2 x float>, <2 x float> } @"\01-[A z]"({}* %self, i8* nocapture %_cmd) [[NUW]] {
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define {<2 x float>, <2 x float>} @"\01-[A z]"({}* %self, i8* nocapture %_cmd) nounwind {
invoke.cont:
%0 = bitcast {}* %self to i8*
- %1 = tail call i8* @objc_retain(i8* %0) nounwind
+ %1 = tail call i8* @llvm.objc.retain(i8* %0) nounwind
tail call void @llvm.dbg.value(metadata {}* %self, metadata !DILocalVariable(scope: !2), metadata !DIExpression()), !dbg !DILocation(scope: !2)
tail call void @llvm.dbg.value(metadata {}* %self, metadata !DILocalVariable(scope: !2), metadata !DIExpression()), !dbg !DILocation(scope: !2)
%ivar = load i64, i64* @"OBJC_IVAR_$_A.myZ", align 8
@@ -2753,7 +2753,7 @@ invoke.cont:
%add.ptr24 = getelementptr i8, i8* %0, i64 %ivar23
%4 = bitcast i8* %add.ptr24 to i128*
%srcval = load i128, i128* %4, align 4
- tail call void @objc_release(i8* %0) nounwind
+ tail call void @llvm.objc.release(i8* %0) nounwind
%tmp29 = trunc i128 %srcval to i64
%tmp30 = bitcast i64 %tmp29 to <2 x float>
%tmp31 = insertvalue {<2 x float>, <2 x float>} undef, <2 x float> %tmp30, 0
@@ -2765,15 +2765,15 @@ invoke.cont:
}
; CHECK: @"\01-[Top0 _getX]"({}* %self, i8* nocapture %_cmd) [[NUW]] {
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
; CHECK: }
define i32 @"\01-[Top0 _getX]"({}* %self, i8* nocapture %_cmd) nounwind {
invoke.cont:
%0 = bitcast {}* %self to i8*
- %1 = tail call i8* @objc_retain(i8* %0) nounwind
+ %1 = tail call i8* @llvm.objc.retain(i8* %0) nounwind
%puts = tail call i32 @puts(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str, i64 0, i64 0))
- tail call void @objc_release(i8* %0) nounwind
+ tail call void @llvm.objc.release(i8* %0) nounwind
ret i32 0
}
@@ -2785,36 +2785,36 @@ invoke.cont:
; CHECK: define void @loop(i8* %x, i64 %n) {
; CHECK: for.body:
-; CHECK-NOT: @objc_
-; CHECK: @objc_msgSend
-; CHECK-NOT: @objc_
+; CHECK-NOT: @llvm.objc.
+; CHECK: @llvm.objc.msgSend
+; CHECK-NOT: @llvm.objc.
; CHECK: for.end:
; CHECK: }
define void @loop(i8* %x, i64 %n) {
entry:
- %0 = tail call i8* @objc_retain(i8* %x) nounwind
+ %0 = tail call i8* @llvm.objc.retain(i8* %x) nounwind
%cmp9 = icmp sgt i64 %n, 0
br i1 %cmp9, label %for.body, label %for.end
for.body: ; preds = %entry, %for.body
%i.010 = phi i64 [ %inc, %for.body ], [ 0, %entry ]
- %1 = tail call i8* @objc_retain(i8* %x) nounwind
+ %1 = tail call i8* @llvm.objc.retain(i8* %x) nounwind
%tmp5 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_", align 8
- %call = tail call i8* (i8*, i8*, ...) @objc_msgSend(i8* %1, i8* %tmp5)
- tail call void @objc_release(i8* %1) nounwind, !clang.imprecise_release !0
+ %call = tail call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %1, i8* %tmp5)
+ tail call void @llvm.objc.release(i8* %1) nounwind, !clang.imprecise_release !0
%inc = add nsw i64 %i.010, 1
%exitcond = icmp eq i64 %inc, %n
br i1 %exitcond, label %for.end, label %for.body
for.end: ; preds = %for.body, %entry
- tail call void @objc_release(i8* %x) nounwind, !clang.imprecise_release !0
+ tail call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
ret void
}
; ObjCARCOpt can delete the retain,release on self.
; CHECK: define void @TextEditTest(%2* %self, %3* %pboard) {
-; CHECK-NOT: call i8* @objc_retain(i8* %tmp7)
+; CHECK-NOT: call i8* @llvm.objc.retain(i8* %tmp7)
; CHECK: }
%0 = type { i8* (i8*, %struct._message_ref_t*, ...)*, i8* }
@@ -2873,34 +2873,34 @@ define void @TextEditTest(%2* %self, %3* %pboard) {
entry:
%err = alloca %4*, align 8
%tmp7 = bitcast %2* %self to i8*
- %tmp8 = call i8* @objc_retain(i8* %tmp7) nounwind
+ %tmp8 = call i8* @llvm.objc.retain(i8* %tmp7) nounwind
store %4* null, %4** %err, align 8
%tmp1 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_17", align 8
%tmp2 = load %struct.__CFString*, %struct.__CFString** @kUTTypePlainText, align 8
%tmp3 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_19", align 8
%tmp4 = bitcast %struct._class_t* %tmp1 to i8*
- %call5 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp4, i8* %tmp3, %struct.__CFString* %tmp2)
+ %call5 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp4, i8* %tmp3, %struct.__CFString* %tmp2)
%tmp5 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_21", align 8
%tmp6 = bitcast %3* %pboard to i8*
- %call76 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp6, i8* %tmp5, i8* %call5)
- %tmp9 = call i8* @objc_retain(i8* %call76) nounwind
+ %call76 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp6, i8* %tmp5, i8* %call5)
+ %tmp9 = call i8* @llvm.objc.retain(i8* %call76) nounwind
%tobool = icmp eq i8* %tmp9, null
br i1 %tobool, label %end, label %land.lhs.true
land.lhs.true: ; preds = %entry
%tmp11 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_23", align 8
- %call137 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp6, i8* %tmp11, i8* %tmp9)
+ %call137 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp6, i8* %tmp11, i8* %tmp9)
%tmp = bitcast i8* %call137 to %1*
- %tmp10 = call i8* @objc_retain(i8* %call137) nounwind
- call void @objc_release(i8* null) nounwind
- %tmp12 = call i8* @objc_retain(i8* %call137) nounwind
- call void @objc_release(i8* null) nounwind
+ %tmp10 = call i8* @llvm.objc.retain(i8* %call137) nounwind
+ call void @llvm.objc.release(i8* null) nounwind
+ %tmp12 = call i8* @llvm.objc.retain(i8* %call137) nounwind
+ call void @llvm.objc.release(i8* null) nounwind
%tobool16 = icmp eq i8* %call137, null
br i1 %tobool16, label %end, label %if.then
if.then: ; preds = %land.lhs.true
%tmp19 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_25", align 8
- %call21 = call signext i8 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8 (i8*, i8*)*)(i8* %call137, i8* %tmp19)
+ %call21 = call signext i8 bitcast (i8* (i8*, i8*, ...)* @llvm.objc.msgSend to i8 (i8*, i8*)*)(i8* %call137, i8* %tmp19)
%tobool22 = icmp eq i8 %call21, 0
br i1 %tobool22, label %if.then44, label %land.lhs.true23
@@ -2908,10 +2908,10 @@ land.lhs.true23: ; preds = %if.then
%tmp24 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_26", align 8
%tmp26 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_28", align 8
%tmp27 = bitcast %struct._class_t* %tmp24 to i8*
- %call2822 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp27, i8* %tmp26, i8* %call137)
+ %call2822 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp27, i8* %tmp26, i8* %call137)
%tmp13 = bitcast i8* %call2822 to %5*
- %tmp14 = call i8* @objc_retain(i8* %call2822) nounwind
- call void @objc_release(i8* null) nounwind
+ %tmp14 = call i8* @llvm.objc.retain(i8* %call2822) nounwind
+ call void @llvm.objc.release(i8* null) nounwind
%tobool30 = icmp eq i8* %call2822, null
br i1 %tobool30, label %if.then44, label %if.end
@@ -2919,38 +2919,38 @@ if.end: ; preds = %land.lhs.true23
%tmp32 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_29", align 8
%tmp33 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_31", align 8
%tmp34 = bitcast %struct._class_t* %tmp32 to i8*
- %call35 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp34, i8* %tmp33)
+ %call35 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp34, i8* %tmp33)
%tmp37 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_33", align 8
- %call3923 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %call35, i8* %tmp37, i8* %call2822, i32 signext 1, %4** %err)
+ %call3923 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %call35, i8* %tmp37, i8* %call2822, i32 signext 1, %4** %err)
%cmp = icmp eq i8* %call3923, null
br i1 %cmp, label %if.then44, label %end
if.then44: ; preds = %if.end, %land.lhs.true23, %if.then
%url.025 = phi %5* [ %tmp13, %if.end ], [ %tmp13, %land.lhs.true23 ], [ null, %if.then ]
%tmp49 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_35", align 8
- %call51 = call %struct._NSRange bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to %struct._NSRange (i8*, i8*, i64, i64)*)(i8* %call137, i8* %tmp49, i64 0, i64 0)
+ %call51 = call %struct._NSRange bitcast (i8* (i8*, i8*, ...)* @llvm.objc.msgSend to %struct._NSRange (i8*, i8*, i64, i64)*)(i8* %call137, i8* %tmp49, i64 0, i64 0)
%call513 = extractvalue %struct._NSRange %call51, 0
%call514 = extractvalue %struct._NSRange %call51, 1
%tmp52 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_37", align 8
- %call548 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %call137, i8* %tmp52, i64 %call513, i64 %call514)
+ %call548 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %call137, i8* %tmp52, i64 %call513, i64 %call514)
%tmp55 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_38", align 8
%tmp56 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_40", align 8
%tmp57 = bitcast %struct._class_t* %tmp55 to i8*
- %call58 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp57, i8* %tmp56)
+ %call58 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp57, i8* %tmp56)
%tmp59 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_42", align 8
- %call6110 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %call548, i8* %tmp59, i8* %call58)
- %tmp15 = call i8* @objc_retain(i8* %call6110) nounwind
- call void @objc_release(i8* %call137) nounwind
+ %call6110 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %call548, i8* %tmp59, i8* %call58)
+ %tmp15 = call i8* @llvm.objc.retain(i8* %call6110) nounwind
+ call void @llvm.objc.release(i8* %call137) nounwind
%tmp64 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_46", align 8
- %call66 = call signext i8 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8 (i8*, i8*, %1*)*)(i8* %call6110, i8* %tmp64, %1* bitcast (%struct.NSConstantString* @_unnamed_cfstring_44 to %1*))
+ %call66 = call signext i8 bitcast (i8* (i8*, i8*, ...)* @llvm.objc.msgSend to i8 (i8*, i8*, %1*)*)(i8* %call6110, i8* %tmp64, %1* bitcast (%struct.NSConstantString* @_unnamed_cfstring_44 to %1*))
%tobool67 = icmp eq i8 %call66, 0
br i1 %tobool67, label %if.end74, label %if.then68
if.then68: ; preds = %if.then44
%tmp70 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_48", align 8
- %call7220 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %call6110, i8* %tmp70)
- %tmp16 = call i8* @objc_retain(i8* %call7220) nounwind
- call void @objc_release(i8* %call6110) nounwind
+ %call7220 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %call6110, i8* %tmp70)
+ %tmp16 = call i8* @llvm.objc.retain(i8* %call7220) nounwind
+ call void @llvm.objc.release(i8* %call6110) nounwind
br label %if.end74
if.end74: ; preds = %if.then68, %if.then44
@@ -2964,7 +2964,7 @@ if.end74: ; preds = %if.then68, %if.then
land.lhs.true80: ; preds = %if.end74
%tmp82 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_25", align 8
- %call84 = call signext i8 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8 (i8*, i8*)*)(i8* %filename.0.in, i8* %tmp82)
+ %call84 = call signext i8 bitcast (i8* (i8*, i8*, ...)* @llvm.objc.msgSend to i8 (i8*, i8*)*)(i8* %filename.0.in, i8* %tmp82)
%tobool86 = icmp eq i8 %call84, 0
br i1 %tobool86, label %if.then109, label %if.end106
@@ -2972,17 +2972,17 @@ if.end106: ; preds = %land.lhs.true80
%tmp88 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_26", align 8
%tmp90 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_28", align 8
%tmp91 = bitcast %struct._class_t* %tmp88 to i8*
- %call9218 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp91, i8* %tmp90, i8* %filename.0.in)
+ %call9218 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp91, i8* %tmp90, i8* %filename.0.in)
%tmp20 = bitcast i8* %call9218 to %5*
- %tmp21 = call i8* @objc_retain(i8* %call9218) nounwind
+ %tmp21 = call i8* @llvm.objc.retain(i8* %call9218) nounwind
%tmp22 = bitcast %5* %url.025 to i8*
- call void @objc_release(i8* %tmp22) nounwind
+ call void @llvm.objc.release(i8* %tmp22) nounwind
%tmp94 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_29", align 8
%tmp95 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_31", align 8
%tmp96 = bitcast %struct._class_t* %tmp94 to i8*
- %call97 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp96, i8* %tmp95)
+ %call97 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp96, i8* %tmp95)
%tmp99 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_33", align 8
- %call10119 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %call97, i8* %tmp99, i8* %call9218, i32 signext 1, %4** %err)
+ %call10119 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %call97, i8* %tmp99, i8* %call9218, i32 signext 1, %4** %err)
%phitmp = icmp eq i8* %call10119, null
br i1 %phitmp, label %if.then109, label %end
@@ -3000,12 +3000,12 @@ if.then112: ; preds = %if.then109
%tmp118 = load %1*, %1** @NSFilePathErrorKey, align 8
%tmp119 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_53", align 8
%tmp120 = bitcast %struct._class_t* %tmp115 to i8*
- %call12113 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp120, i8* %tmp119, %1* %call117, %1* %tmp118, i8* null)
+ %call12113 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp120, i8* %tmp119, %1* %call117, %1* %tmp118, i8* null)
%tmp122 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_55", align 8
%tmp123 = bitcast %struct._class_t* %tmp113 to i8*
- %call12414 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp123, i8* %tmp122, %1* %tmp114, i64 258, i8* %call12113)
- %tmp23 = call i8* @objc_retain(i8* %call12414) nounwind
- %tmp25 = call i8* @objc_autorelease(i8* %tmp23) nounwind
+ %call12414 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp123, i8* %tmp122, %1* %tmp114, i64 258, i8* %call12113)
+ %tmp23 = call i8* @llvm.objc.retain(i8* %call12414) nounwind
+ %tmp25 = call i8* @llvm.objc.autorelease(i8* %tmp23) nounwind
%tmp28 = bitcast i8* %tmp25 to %4*
store %4* %tmp28, %4** %err, align 8
br label %if.end125
@@ -3015,44 +3015,44 @@ if.end125: ; preds = %if.then112, %if.the
%tmp126 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_56", align 8
%tmp128 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_58", align 8
%tmp129 = bitcast %struct._class_t* %tmp126 to i8*
- %call13015 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %tmp129, i8* %tmp128, %4* %tmp127)
+ %call13015 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %tmp129, i8* %tmp128, %4* %tmp127)
%tmp131 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_60", align 8
- %call13317 = call i8* (i8*, i8*, ...) @objc_msgSend(i8* %call13015, i8* %tmp131)
+ %call13317 = call i8* (i8*, i8*, ...) @llvm.objc.msgSend(i8* %call13015, i8* %tmp131)
br label %end
end: ; preds = %if.end125, %if.end106, %if.end, %land.lhs.true, %entry
%filename.2 = phi %1* [ %filename.0, %if.end106 ], [ %filename.0, %if.end125 ], [ %tmp, %land.lhs.true ], [ null, %entry ], [ %tmp, %if.end ]
%origFilename.0 = phi %1* [ %tmp, %if.end106 ], [ %tmp, %if.end125 ], [ %tmp, %land.lhs.true ], [ null, %entry ], [ %tmp, %if.end ]
%url.2 = phi %5* [ %tmp20, %if.end106 ], [ %url.129, %if.end125 ], [ null, %land.lhs.true ], [ null, %entry ], [ %tmp13, %if.end ]
- call void @objc_release(i8* %tmp9) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %tmp9) nounwind, !clang.imprecise_release !0
%tmp29 = bitcast %5* %url.2 to i8*
- call void @objc_release(i8* %tmp29) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %tmp29) nounwind, !clang.imprecise_release !0
%tmp30 = bitcast %1* %origFilename.0 to i8*
- call void @objc_release(i8* %tmp30) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %tmp30) nounwind, !clang.imprecise_release !0
%tmp31 = bitcast %1* %filename.2 to i8*
- call void @objc_release(i8* %tmp31) nounwind, !clang.imprecise_release !0
- call void @objc_release(i8* %tmp7) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %tmp31) nounwind, !clang.imprecise_release !0
+ call void @llvm.objc.release(i8* %tmp7) nounwind, !clang.imprecise_release !0
ret void
}
declare i32 @__gxx_personality_v0(...)
-declare i32 @objc_sync_enter(i8*)
-declare i32 @objc_sync_exit(i8*)
+declare i32 @llvm.objc.sync.enter(i8*)
+declare i32 @llvm.objc.sync.exit(i8*)
; Make sure that we understand that objc_sync_{enter,exit} are IC_User not
; IC_Call/IC_CallOrUser.
; CHECK-LABEL: define void @test67(
-; CHECK-NEXT: call i32 @objc_sync_enter(i8* %x)
-; CHECK-NEXT: call i32 @objc_sync_exit(i8* %x)
+; CHECK-NEXT: call i32 @llvm.objc.sync.enter(i8* %x)
+; CHECK-NEXT: call i32 @llvm.objc.sync.exit(i8* %x)
; CHECK-NEXT: ret void
; CHECK-NEXT: }
define void @test67(i8* %x) {
- call i8* @objc_retain(i8* %x)
- call i32 @objc_sync_enter(i8* %x)
- call i32 @objc_sync_exit(i8* %x)
- call void @objc_release(i8* %x), !clang.imprecise_release !0
+ call i8* @llvm.objc.retain(i8* %x)
+ call i32 @llvm.objc.sync.enter(i8* %x)
+ call i32 @llvm.objc.sync.exit(i8* %x)
+ call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
ret void
}
@@ -3069,6 +3069,6 @@ define void @test67(i8* %x) {
!4 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
!5 = !{i32 2, !"Debug Info Version", i32 3}
-; CHECK: attributes #0 = { nounwind readnone speculatable }
; CHECK: attributes [[NUW]] = { nounwind }
+; CHECK: attributes #1 = { nounwind readnone speculatable }
; CHECK: ![[RELEASE]] = !{}
OpenPOWER on IntegriCloud