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
diff --git a/llvm/test/Transforms/ObjCARC/clang-arc-use-barrier.ll b/llvm/test/Transforms/ObjCARC/clang-arc-use-barrier.ll
index 98d49ec..a00c117 100644
--- a/llvm/test/Transforms/ObjCARC/clang-arc-use-barrier.ll
+++ b/llvm/test/Transforms/ObjCARC/clang-arc-use-barrier.ll
@@ -2,36 +2,36 @@
 
 %0 = type opaque
 
-; Make sure ARC optimizer doesn't sink @obj_retain past @clang.arc.use.
+; Make sure ARC optimizer doesn't sink @obj_retain past @llvm.objc.clang.arc.use.
 
-; CHECK: call i8* @objc_retain(
-; CHECK: call void (...) @clang.arc.use(
-; CHECK: call i8* @objc_retain(
-; CHECK: call void (...) @clang.arc.use(
+; CHECK: call i8* @llvm.objc.retain
+; CHECK: call void (...) @llvm.objc.clang.arc.use(
+; CHECK: call i8* @llvm.objc.retain
+; CHECK: call void (...) @llvm.objc.clang.arc.use(
 
 define void @runTest() local_unnamed_addr {
   %1 = alloca %0*, align 8
   %2 = alloca %0*, align 8
   %3 = tail call %0* @foo0()
   %4 = bitcast %0* %3 to i8*
-  %5 = tail call i8* @objc_retainAutoreleasedReturnValue(i8* %4)
+  %5 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %4)
   store %0* %3, %0** %1, align 8
   call void @foo1(%0** nonnull %1)
   %6 = load %0*, %0** %1, align 8
   %7 = bitcast %0* %6 to i8*
-  %8 = call i8* @objc_retain(i8* %7)
-  call void (...) @clang.arc.use(%0* %3)
-  call void @objc_release(i8* %4)
+  %8 = call i8* @llvm.objc.retain(i8* %7)
+  call void (...) @llvm.objc.clang.arc.use(%0* %3)
+  call void @llvm.objc.release(i8* %4)
   store %0* %6, %0** %2, align 8
   call void @foo1(%0** nonnull %2)
   %9 = load %0*, %0** %2, align 8
   %10 = bitcast %0* %9 to i8*
-  %11 = call i8* @objc_retain(i8* %10)
-  call void (...) @clang.arc.use(%0* %6)
+  %11 = call i8* @llvm.objc.retain(i8* %10)
+  call void (...) @llvm.objc.clang.arc.use(%0* %6)
   %tmp1 = load %0*, %0** %2, align 8
-  call void @objc_release(i8* %7)
+  call void @llvm.objc.release(i8* %7)
   call void @foo2(%0* %9)
-  call void @objc_release(i8* %10)
+  call void @llvm.objc.release(i8* %10)
   ret void
 }
 
@@ -39,7 +39,7 @@
 declare void @foo1(%0**) local_unnamed_addr
 declare void @foo2(%0*) local_unnamed_addr
 
-declare i8* @objc_retainAutoreleasedReturnValue(i8*) local_unnamed_addr
-declare i8* @objc_retain(i8*) local_unnamed_addr
-declare void @clang.arc.use(...) local_unnamed_addr
-declare void @objc_release(i8*) local_unnamed_addr
+declare i8* @llvm.objc.retainAutoreleasedReturnValue(i8*) local_unnamed_addr
+declare i8* @llvm.objc.retain(i8*) local_unnamed_addr
+declare void @llvm.objc.clang.arc.use(...) local_unnamed_addr
+declare void @llvm.objc.release(i8*) local_unnamed_addr