diff test/Transforms/ObjCARC/allocas.ll @ 147:c2174574ed3a

LLVM 10
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 16:55:33 +0900
parents 803732b1fca8
children
line wrap: on
line diff
--- a/test/Transforms/ObjCARC/allocas.ll	Sat Feb 17 09:57:20 2018 +0900
+++ b/test/Transforms/ObjCARC/allocas.ll	Wed Aug 14 16:55:33 2019 +0900
@@ -1,13 +1,13 @@
 ; RUN: opt -objc-arc -S < %s | FileCheck %s
 
-declare i8* @objc_retain(i8*)
-declare i8* @objc_retainAutoreleasedReturnValue(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* @llvm.objc.retain(i8*)
+declare i8* @llvm.objc.retainAutoreleasedReturnValue(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* @objc_retainedObject(i8*)
 declare i8* @objc_unretainedObject(i8*)
@@ -25,7 +25,7 @@
 
 declare void @llvm.dbg.value(metadata, metadata, metadata)
 
-declare i8* @objc_msgSend(i8*, i8*, ...)
+declare i8* @llvm.objc.msgSend(i8*, i8*, ...)
 
 
 ; In the presence of allocas, unconditionally remove retain/release pairs only
@@ -44,77 +44,77 @@
 ; rdar://13750319
 
 ; CHECK: define void @test1a(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test1a(i8* %x) {
 entry:
   %A = alloca i8*
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   store i8* %x, i8** %A, align 8
   %y = load i8*, i8** %A
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 ; CHECK: define void @test1b(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test1b(i8* %x) {
 entry:
   %A = alloca i8*
   %gep = getelementptr i8*, i8** %A, i32 0
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   store i8* %x, i8** %gep, align 8
   %y = load i8*, i8** %A
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 
 ; CHECK: define void @test1c(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test1c(i8* %x) {
 entry:
   %A = alloca i8*, i32 3
   %gep = getelementptr i8*, i8** %A, i32 2
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   store i8* %x, i8** %gep, align 8
   %y = load i8*, i8** %gep
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 
 ; CHECK: define void @test1d(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test1d(i8* %x) {
@@ -132,22 +132,22 @@
 exit:
   %A = phi i8** [ %allocaA, %use_allocaA ], [ %allocaB, %use_allocaB ]
   %gep = getelementptr i8*, i8** %A, i32 0
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   store i8* %x, i8** %gep, align 8
   %y = load i8*, i8** %gep
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 ; CHECK: define void @test1e(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test1e(i8* %x) {
@@ -165,22 +165,22 @@
 exit:
   %A = phi i8** [ %allocaA, %use_allocaA ], [ %allocaB, %use_allocaB ]
   %gep = getelementptr i8*, i8** %A, i32 2
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   store i8* %x, i8** %gep, align 8
   %y = load i8*, i8** %gep
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 ; CHECK: define void @test1f(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test1f(i8* %x) {
@@ -188,14 +188,14 @@
   %allocaOne = alloca i8*
   %allocaTwo = alloca i8*
   %A = select i1 undef, i8** %allocaOne, i8** %allocaTwo
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   store i8* %x, i8** %A, align 8
   %y = load i8*, i8** %A
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
@@ -204,10 +204,10 @@
 
 
 ; CHECK: define void @test2a(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test2a(i8* %x) {
@@ -224,20 +224,20 @@
   br label %bb3
 
 bb3:
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 ; CHECK: define void @test2b(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test2b(i8* %x) {
@@ -256,20 +256,20 @@
   br label %bb3
 
 bb3:
-  tail call i8* @objc_retain(i8* %x)
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 ; CHECK: define void @test2c(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test2c(i8* %x) {
@@ -279,7 +279,7 @@
   store i8* %x, i8** %gep1, align 8
   %gep2 = getelementptr i8*, i8** %A, i32 2
   %y = load i8*, i8** %gep2
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   br label %bb1
 
 bb1:
@@ -289,24 +289,24 @@
   br label %bb3
 
 bb3:
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
 ; CHECK: define void @test2d(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_retain(i8* %x)
-; CHECK: @objc_release(i8* %y)
-; CHECK: @objc_release(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.retain(i8* %x)
+; CHECK: @llvm.objc.release(i8* %y)
+; CHECK: @llvm.objc.release(i8* %x)
 ; CHECK: ret void
 ; CHECK: }
 define void @test2d(i8* %x) {
 entry:
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   br label %bb1
 
 bb1:
@@ -328,11 +328,11 @@
 bb3:
   %A = phi i8** [ %Abb1, %bb1 ], [ %Abb2, %bb2 ]
   %y = phi i8* [ %ybb1, %bb1 ], [ %ybb2, %bb2 ]
-  tail call i8* @objc_retain(i8* %x)
+  tail call i8* @llvm.objc.retain(i8* %x)
   call void @use_alloca(i8** %A)
-  call void @objc_release(i8* %y), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %y), !clang.imprecise_release !0
   call void @use_pointer(i8* %x)
-  call void @objc_release(i8* %x), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
   ret void
 }
 
@@ -344,21 +344,21 @@
 
 ; CHECK: define void @test3a() {
 ; CHECK: entry:
-; CHECK:   @objc_retainAutoreleasedReturnValue
-; CHECK:   @objc_retain
-; CHECK:   @objc_retain
-; CHECK:   @objc_retain
-; CHECK:   @objc_retain
+; CHECK:   @llvm.objc.retainAutoreleasedReturnValue
+; CHECK:   @llvm.objc.retain
+; CHECK:   @llvm.objc.retain
+; CHECK:   @llvm.objc.retain
+; CHECK:   @llvm.objc.retain
 ; CHECK: arraydestroy.body:
-; CHECK:   @objc_release
-; CHECK-NOT: @objc_release
+; CHECK:   @llvm.objc.release
+; CHECK-NOT: @llvm.objc.release
 ; CHECK: arraydestroy.done:
-; CHECK-NOT: @objc_release
+; CHECK-NOT: @llvm.objc.release
 ; CHECK: arraydestroy.body1:
-; CHECK:   @objc_release
-; CHECK-NOT: @objc_release
+; CHECK:   @llvm.objc.release
+; CHECK-NOT: @llvm.objc.release
 ; CHECK: arraydestroy.done1:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
 ; CHECK: ret void
 ; CHECK: }
 define void @test3a() {
@@ -367,22 +367,22 @@
   %objs = alloca [2 x i8*], align 16
   
   %call1 = call i8* @returner()
-  %tmp0 = tail call i8* @objc_retainAutoreleasedReturnValue(i8* %call1)
+  %tmp0 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %call1)
 
   %objs.begin = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 0
-  tail call i8* @objc_retain(i8* %call1)
+  tail call i8* @llvm.objc.retain(i8* %call1)
   store i8* %call1, i8** %objs.begin, align 8
   %objs.elt = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 1
-  tail call i8* @objc_retain(i8* %call1)
+  tail call i8* @llvm.objc.retain(i8* %call1)
   store i8* %call1, i8** %objs.elt
 
   %call2 = call i8* @returner1()
   %call3 = call i8* @returner2()
   %keys.begin = getelementptr inbounds [2 x i8*], [2 x i8*]* %keys, i64 0, i64 0
-  tail call i8* @objc_retain(i8* %call2)
+  tail call i8* @llvm.objc.retain(i8* %call2)
   store i8* %call2, i8** %keys.begin, align 8
   %keys.elt = getelementptr inbounds [2 x i8*], [2 x i8*]* %keys, i64 0, i64 1
-  tail call i8* @objc_retain(i8* %call3)
+  tail call i8* @llvm.objc.retain(i8* %call3)
   store i8* %call3, i8** %keys.elt  
   
   %gep = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 2
@@ -392,7 +392,7 @@
   %arraydestroy.elementPast = phi i8** [ %gep, %entry ], [ %arraydestroy.element, %arraydestroy.body ]
   %arraydestroy.element = getelementptr inbounds i8*, i8** %arraydestroy.elementPast, i64 -1
   %destroy_tmp = load i8*, i8** %arraydestroy.element, align 8
-  call void @objc_release(i8* %destroy_tmp), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %destroy_tmp), !clang.imprecise_release !0
   %objs_ptr = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 0
   %arraydestroy.cmp = icmp eq i8** %arraydestroy.element, %objs_ptr
   br i1 %arraydestroy.cmp, label %arraydestroy.done, label %arraydestroy.body
@@ -405,13 +405,13 @@
   %arraydestroy.elementPast1 = phi i8** [ %gep1, %arraydestroy.done ], [ %arraydestroy.element1, %arraydestroy.body1 ]
   %arraydestroy.element1 = getelementptr inbounds i8*, i8** %arraydestroy.elementPast1, i64 -1
   %destroy_tmp1 = load i8*, i8** %arraydestroy.element1, align 8
-  call void @objc_release(i8* %destroy_tmp1), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %destroy_tmp1), !clang.imprecise_release !0
   %keys_ptr = getelementptr inbounds [2 x i8*], [2 x i8*]* %keys, i64 0, i64 0
   %arraydestroy.cmp1 = icmp eq i8** %arraydestroy.element1, %keys_ptr
   br i1 %arraydestroy.cmp1, label %arraydestroy.done1, label %arraydestroy.body1
 
 arraydestroy.done1:
-  call void @objc_release(i8* %call1), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %call1), !clang.imprecise_release !0
   ret void
 }
 
@@ -422,21 +422,21 @@
 
 ; CHECK: define void @test3b() {
 ; CHECK: entry:
-; CHECK:   @objc_retainAutoreleasedReturnValue
-; CHECK:   @objc_retain
-; CHECK:   @objc_retain
-; CHECK:   @objc_retain
-; CHECK:   @objc_retain
+; CHECK:   @llvm.objc.retainAutoreleasedReturnValue
+; CHECK:   @llvm.objc.retain
+; CHECK:   @llvm.objc.retain
+; CHECK:   @llvm.objc.retain
+; CHECK:   @llvm.objc.retain
 ; CHECK: arraydestroy.body:
-; CHECK:   @objc_release
-; CHECK-NOT: @objc_release
+; CHECK:   @llvm.objc.release
+; CHECK-NOT: @llvm.objc.release
 ; CHECK: arraydestroy.done:
-; CHECK-NOT: @objc_release
+; CHECK-NOT: @llvm.objc.release
 ; CHECK: arraydestroy.body1:
-; CHECK:   @objc_release
-; CHECK-NOT: @objc_release
+; CHECK:   @llvm.objc.release
+; CHECK-NOT: @llvm.objc.release
 ; CHECK: arraydestroy.done1:
-; CHECK: @objc_release
+; CHECK: @llvm.objc.release
 ; CHECK: ret void
 ; CHECK: }
 define void @test3b() {
@@ -445,23 +445,23 @@
   %objs = alloca [2 x i8*], align 16
   
   %call1 = call i8* @returner()
-  %tmp0 = tail call i8* @objc_retainAutoreleasedReturnValue(i8* %call1)
-  %tmp1 = tail call i8* @objc_retain(i8* %call1)
+  %tmp0 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %call1)
+  %tmp1 = tail call i8* @llvm.objc.retain(i8* %call1)
 
   %objs.begin = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 0
-  tail call i8* @objc_retain(i8* %call1)
+  tail call i8* @llvm.objc.retain(i8* %call1)
   store i8* %call1, i8** %objs.begin, align 8
   %objs.elt = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 1
-  tail call i8* @objc_retain(i8* %call1)
+  tail call i8* @llvm.objc.retain(i8* %call1)
   store i8* %call1, i8** %objs.elt
 
   %call2 = call i8* @returner1()
   %call3 = call i8* @returner2()
   %keys.begin = getelementptr inbounds [2 x i8*], [2 x i8*]* %keys, i64 0, i64 0
-  tail call i8* @objc_retain(i8* %call2)
+  tail call i8* @llvm.objc.retain(i8* %call2)
   store i8* %call2, i8** %keys.begin, align 8
   %keys.elt = getelementptr inbounds [2 x i8*], [2 x i8*]* %keys, i64 0, i64 1
-  tail call i8* @objc_retain(i8* %call3)
+  tail call i8* @llvm.objc.retain(i8* %call3)
   store i8* %call3, i8** %keys.elt  
   
   %gep = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 2
@@ -471,7 +471,7 @@
   %arraydestroy.elementPast = phi i8** [ %gep, %entry ], [ %arraydestroy.element, %arraydestroy.body ]
   %arraydestroy.element = getelementptr inbounds i8*, i8** %arraydestroy.elementPast, i64 -1
   %destroy_tmp = load i8*, i8** %arraydestroy.element, align 8
-  call void @objc_release(i8* %destroy_tmp), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %destroy_tmp), !clang.imprecise_release !0
   %objs_ptr = getelementptr inbounds [2 x i8*], [2 x i8*]* %objs, i64 0, i64 0
   %arraydestroy.cmp = icmp eq i8** %arraydestroy.element, %objs_ptr
   br i1 %arraydestroy.cmp, label %arraydestroy.done, label %arraydestroy.body
@@ -484,14 +484,14 @@
   %arraydestroy.elementPast1 = phi i8** [ %gep1, %arraydestroy.done ], [ %arraydestroy.element1, %arraydestroy.body1 ]
   %arraydestroy.element1 = getelementptr inbounds i8*, i8** %arraydestroy.elementPast1, i64 -1
   %destroy_tmp1 = load i8*, i8** %arraydestroy.element1, align 8
-  call void @objc_release(i8* %destroy_tmp1), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %destroy_tmp1), !clang.imprecise_release !0
   %keys_ptr = getelementptr inbounds [2 x i8*], [2 x i8*]* %keys, i64 0, i64 0
   %arraydestroy.cmp1 = icmp eq i8** %arraydestroy.element1, %keys_ptr
   br i1 %arraydestroy.cmp1, label %arraydestroy.done1, label %arraydestroy.body1
 
 arraydestroy.done1:
-  call void @objc_release(i8* %call1), !clang.imprecise_release !0
-  call void @objc_release(i8* %call1), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %call1), !clang.imprecise_release !0
+  call void @llvm.objc.release(i8* %call1), !clang.imprecise_release !0
   ret void
 }