diff options
author | Pete Cooper <peter_cooper@apple.com> | 2018-12-18 20:33:00 +0000 |
---|---|---|
committer | Pete Cooper <peter_cooper@apple.com> | 2018-12-18 20:33:00 +0000 |
commit | 6682997445e8ad84b4fbab29270e016af5a31be3 (patch) | |
tree | 44f2f98644148c9dd9142a8f1caf595ab10f7452 /test/CodeGenObjCXX | |
parent | ccfb6f1d2d2ec37c38a5583d63a8a7974d032c59 (diff) |
Generate objc intrinsics instead of runtime calls as the ARC optimizer now works only on intrinsics
Differential Revision: https://reviews.llvm.org/D55802
Reviewers: rjmccall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@349535 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenObjCXX')
23 files changed, 212 insertions, 212 deletions
diff --git a/test/CodeGenObjCXX/arc-attrs.mm b/test/CodeGenObjCXX/arc-attrs.mm index 0b64d77566..5ab7a69de2 100644 --- a/test/CodeGenObjCXX/arc-attrs.mm +++ b/test/CodeGenObjCXX/arc-attrs.mm @@ -15,7 +15,7 @@ void sanityTest() { // CHECK-NEXT: call void @_Z13releaseObjectP11objc_object(i8* [[OBJ2]]) releaseObject(makeObject2()); - // CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null) + // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null) // CHECK-NEXT: ret void } @@ -43,7 +43,7 @@ void templateTest() { // CHECK-NEXT: call void @_Z14releaseObjectTIU8__strongP11objc_objectEvT_(i8* [[OBJ3]]) releaseObjectT(makeObject1()); - // CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null) + // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null) // CHECK-NEXT: ret void } @@ -58,7 +58,7 @@ ForwardConsumed::ForwardConsumed(__attribute__((ns_consumed)) id x) {} // CHECK-NOT: objc_retain // CHECK: store i8* {{.*}}, i8** [[X:%.*]], // CHECK-NOT: [[X]] -// CHECK: call void @objc_storeStrong(i8** [[X]], i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** [[X]], i8* null) // CHECK: define void @_ZN15ForwardConsumedC1EP11objc_object( // CHECK-NOT: objc_retain @@ -66,4 +66,4 @@ ForwardConsumed::ForwardConsumed(__attribute__((ns_consumed)) id x) {} // CHECK: [[T0:%.*]] = load i8*, i8** [[X]], // CHECK-NEXT: store i8* null, i8** [[X]], // CHECK-NEXT: call void @_ZN15ForwardConsumedC2EP11objc_object({{.*}}, i8* [[T0]]) -// CHECK: call void @objc_storeStrong(i8** [[X]], i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** [[X]], i8* null) diff --git a/test/CodeGenObjCXX/arc-blocks.mm b/test/CodeGenObjCXX/arc-blocks.mm index 4791aff0b3..ec0c12456a 100644 --- a/test/CodeGenObjCXX/arc-blocks.mm +++ b/test/CodeGenObjCXX/arc-blocks.mm @@ -72,7 +72,7 @@ namespace test1 { // CHECK: %[[V10:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 5 // CHECK: %[[BLOCKCOPY_SRC2:.*]] = load i8*, i8** %[[V9]], align 8 // CHECK: store i8* null, i8** %[[V10]], align 8 -// CHECK: call void @objc_storeStrong(i8** %[[V10]], i8* %[[BLOCKCOPY_SRC2]]) +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V10]], i8* %[[BLOCKCOPY_SRC2]]) // CHECK: %[[V4:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_SOURCE]], i32 0, i32 6 // CHECK: %[[V5:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 6 @@ -82,7 +82,7 @@ namespace test1 { // CHECK: %[[V7:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_SOURCE]], i32 0, i32 7 // CHECK: %[[V8:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 7 -// CHECK: call void @objc_copyWeak(i8** %[[V8]], i8** %[[V7]]) +// CHECK: call void @llvm.objc.copyWeak(i8** %[[V8]], i8** %[[V7]]) // CHECK: %[[V11:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_SOURCE]], i32 0, i32 8 // CHECK: %[[V12:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 8 @@ -109,10 +109,10 @@ namespace test1 { // CHECK: br label %[[EHCLEANUP]] // CHECK: [[EHCLEANUP]]: -// CHECK: call void @objc_destroyWeak(i8** %[[V8]]) +// CHECK: call void @llvm.objc.destroyWeak(i8** %[[V8]]) // CHECK: %[[V21:.*]] = load i8*, i8** %[[V5]], align 8 // CHECK: call void @_Block_object_dispose(i8* %[[V21]], i32 8) -// CHECK: call void @objc_storeStrong(i8** %[[V10]], i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V10]], i8* null) // CHECK: br label %[[EH_RESUME:.*]] // CHECK: [[EH_RESUME]]: @@ -122,7 +122,7 @@ namespace test1 { // CHECK: call void @__clang_call_terminate( // CHECK-O1-LABEL: define linkonce_odr hidden void @__copy_helper_block_ea8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E( -// CHECK-O1: tail call void @objc_release({{.*}}) {{.*}} !clang.imprecise_release +// CHECK-O1: tail call void @llvm.objc.release({{.*}}) {{.*}} !clang.imprecise_release // CHECK-NOEXCP: define linkonce_odr hidden void @__copy_helper_block_8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E( // CHECK: define linkonce_odr hidden void @__destroy_helper_block_ea8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E( @@ -140,10 +140,10 @@ namespace test1 { // CHECK: to label %[[INVOKE_CONT2:.*]] unwind label %[[LPAD1:.*]] // CHECK: [[INVOKE_CONT2]]: -// CHECK: call void @objc_destroyWeak(i8** %[[V3]]) +// CHECK: call void @llvm.objc.destroyWeak(i8** %[[V3]]) // CHECK: %[[V7:.*]] = load i8*, i8** %[[V2]], align 8 // CHECK: call void @_Block_object_dispose(i8* %[[V7]], i32 8) -// CHECK: call void @objc_storeStrong(i8** %[[V4]], i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V4]], i8* null) // CHECK: ret void // CHECK: [[LPAD]]: @@ -157,10 +157,10 @@ namespace test1 { // CHECK: br label %[[EHCLEANUP]] // CHECK: [[EHCLEANUP]]: -// CHECK: call void @objc_destroyWeak(i8** %[[V3]]) +// CHECK: call void @llvm.objc.destroyWeak(i8** %[[V3]]) // CHECK: %[[V14:.*]] = load i8*, i8** %[[V2]], align 8 // CHECK: call void @_Block_object_dispose(i8* %[[V14]], i32 8) -// CHECK: call void @objc_storeStrong(i8** %[[V4]], i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V4]], i8* null) // CHECK: br label %[[EH_RESUME:.*]] // CHECK: [[EH_RESUME]]: @@ -170,8 +170,8 @@ namespace test1 { // CHECK: call void @__clang_call_terminate( // CHECK-O1-LABEL: define linkonce_odr hidden void @__destroy_helper_block_ea8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E( -// CHECK-O1: tail call void @objc_release({{.*}}) {{.*}} !clang.imprecise_release -// CHECK-O1: tail call void @objc_release({{.*}}) {{.*}} !clang.imprecise_release +// CHECK-O1: tail call void @llvm.objc.release({{.*}}) {{.*}} !clang.imprecise_release +// CHECK-O1: tail call void @llvm.objc.release({{.*}}) {{.*}} !clang.imprecise_release // CHECK-NOEXCP: define linkonce_odr hidden void @__destroy_helper_block_8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E( namespace { diff --git a/test/CodeGenObjCXX/arc-constexpr.mm b/test/CodeGenObjCXX/arc-constexpr.mm index b12ff57a06..42fafcf2a4 100644 --- a/test/CodeGenObjCXX/arc-constexpr.mm +++ b/test/CodeGenObjCXX/arc-constexpr.mm @@ -6,11 +6,11 @@ // CHECK-LABEL: define void @_Z5test1v // CHECK: %[[ALLOCA:[A-Z]+]] = alloca %[[TYPE]]* -// CHECK: %[[V0:[0-9]+]] = call i8* @objc_retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] +// CHECK: %[[V0:[0-9]+]] = call i8* @llvm.objc.retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] // CHECK: %[[V1:[0-9]+]] = bitcast i8* %[[V0]] to %[[TYPE]]* // CHECK: store %[[TYPE]]* %[[V1]], %[[TYPE]]** %[[ALLOCA]] // CHECK: %[[V2:[0-9]+]] = bitcast %[[TYPE]]** %[[ALLOCA]] -// CHECK: call void @objc_storeStrong(i8** %[[V2]], i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V2]], i8* null) void test1() { constexpr NSString *S = @"abc"; } @@ -18,16 +18,16 @@ void test1() { // CHECK-LABEL: define void @_Z5test2v // CHECK: %[[CONST:[a-zA-Z]+]] = alloca %[[TYPE]]* // CHECK: %[[REF_CONST:[a-zA-Z]+]] = alloca %[[TYPE]]* -// CHECK: %[[V0:[0-9]+]] = call i8* @objc_retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] +// CHECK: %[[V0:[0-9]+]] = call i8* @llvm.objc.retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] // CHECK-NEXT: %[[V1:[0-9]+]] = bitcast i8* %[[V0]] to %[[TYPE]]* // CHECK-NEXT: store %[[TYPE]]* %[[V1]], %[[TYPE]]** %[[CONST]] -// CHECK: %[[V2:[0-9]+]] = call i8* @objc_retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] +// CHECK: %[[V2:[0-9]+]] = call i8* @llvm.objc.retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] // CHECK-NEXT: %[[V3:[0-9]+]] = bitcast i8* %[[V2]] to %[[TYPE]]* // CHECK-NEXT: store %[[TYPE]]* %[[V3]], %[[TYPE]]** %[[REF_CONST]] // CHECK: %[[V4:[0-9]+]] = bitcast %[[TYPE]]** %[[REF_CONST]] -// CHECK-NEXT: call void @objc_storeStrong(i8** %[[V4]], i8* null) +// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** %[[V4]], i8* null) // CHECK: %[[V5:[0-9]+]] = bitcast %[[TYPE]]** %[[CONST]] -// CHECK-NEXT: call void @objc_storeStrong(i8** %[[V5]], i8* null) +// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** %[[V5]], i8* null) void test2() { constexpr NSString *Const = @"abc"; // In IR RefConst should be initialized with Const initializer instead of @@ -39,12 +39,12 @@ void test2() { // CHECK: %[[WEAK_CONST:[a-zA-Z]+]] = alloca %[[TYPE]]* // CHECK: %[[REF_WEAK_CONST:[a-zA-Z]+]] = alloca %[[TYPE]]* // CHECK: %[[V0:[0-9]+]] = bitcast %[[TYPE]]** %[[WEAK_CONST]] -// CHECK-NEXT: %[[V1:[0-9]+]] = call i8* @objc_initWeak(i8** %[[V0]], i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] +// CHECK-NEXT: %[[V1:[0-9]+]] = call i8* @llvm.objc.initWeak(i8** %[[V0]], i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] // CHECK: store %[[TYPE]]* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] to %[[TYPE]]*), %[[TYPE]]** %[[REF_WEAK_CONST]] // CHECK: %[[V2:[0-9]+]] = bitcast %[[TYPE]]** %[[REF_WEAK_CONST]] -// CHECK-NEXT: call void @objc_storeStrong(i8** %[[V2]], i8* null) +// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** %[[V2]], i8* null) // CHECK: %[[V3:[0-9]+]] = bitcast %[[TYPE]]** %[[WEAK_CONST]] -// CHECK-NEXT: call void @objc_destroyWeak(i8** %[[V3]]) +// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** %[[V3]]) void test3() { __weak constexpr NSString *WeakConst = @"abc"; NSString* RefWeakConst = WeakConst; diff --git a/test/CodeGenObjCXX/arc-cxx11-init-list.mm b/test/CodeGenObjCXX/arc-cxx11-init-list.mm index af607654e1..2c70f64d20 100644 --- a/test/CodeGenObjCXX/arc-cxx11-init-list.mm +++ b/test/CodeGenObjCXX/arc-cxx11-init-list.mm @@ -29,14 +29,14 @@ extern "C" void single() { function({ [I new] }); } // CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}}) // CHECK-NEXT: [[CAST:%.*]] = bitcast [{{[0-9]+}} x %0*]* %{{.*}} to i8** // CHECK-NEXT: store i8* [[INSTANCE]], i8** [[CAST]], -// CHECK: call void @objc_release(i8* {{.*}}) +// CHECK: call void @llvm.objc.release(i8* {{.*}}) extern "C" void multiple() { function({ [I new], [I new] }); } // CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}}) // CHECK-NEXT: [[CAST:%.*]] = bitcast [{{[0-9]+}} x %0*]* %{{.*}} to i8** // CHECK-NEXT: store i8* [[INSTANCE]], i8** [[CAST]], -// CHECK: call void @objc_release(i8* {{.*}}) +// CHECK: call void @llvm.objc.release(i8* {{.*}}) std::initializer_list<id> foo1() { return {@"str0", @"str1"}; @@ -58,11 +58,11 @@ extern "C" void extended() { // CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}}) // CHECK: {{.*}} call void @_Z8externalv() -// CHECK: {{.*}} call void @objc_release(i8* {{.*}}) +// CHECK: {{.*}} call void @llvm.objc.release(i8* {{.*}}) std::initializer_list<I *> il = { [I new] }; -// CHECK: [[POOL:%.*]] = {{.*}} call i8* @objc_autoreleasePoolPush() +// CHECK: [[POOL:%.*]] = {{.*}} call i8* @llvm.objc.autoreleasePoolPush() // CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}}) // CHECK-NEXT: store i8* [[INSTANCE]], i8** bitcast ([1 x %0*]* @_ZGR2il_ to i8**) -// CHECK: {{.*}} call void @objc_autoreleasePoolPop(i8* [[POOL]]) +// CHECK: {{.*}} call void @llvm.objc.autoreleasePoolPop(i8* [[POOL]]) diff --git a/test/CodeGenObjCXX/arc-exceptions.mm b/test/CodeGenObjCXX/arc-exceptions.mm index 3d50461350..94e1374c83 100644 --- a/test/CodeGenObjCXX/arc-exceptions.mm +++ b/test/CodeGenObjCXX/arc-exceptions.mm @@ -17,11 +17,11 @@ void test0(void) { // CHECK: [[T0:%.*]] = call i8* @objc_begin_catch( // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]* // CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8* -// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW:#[0-9]+]] +// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retain(i8* [[T2]]) [[NUW:#[0-9]+]] // CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]* // CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]] // CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8** -// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]] +// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null) [[NUW]] // CHECK-NEXT: call void @objc_end_catch() [[NUW]] void test1_helper(void); @@ -38,9 +38,9 @@ void test1(void) { // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]* // CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8** // CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8* -// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]] +// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]] // CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8** -// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]] +// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]]) [[NUW]] // CHECK-NEXT: call void @objc_end_catch() [[NUW]] void test2_helper(void); @@ -56,11 +56,11 @@ void test2(void) { // CHECK: [[T0:%.*]] = call i8* @__cxa_begin_catch( // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]* // CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8* -// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW]] +// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retain(i8* [[T2]]) [[NUW]] // CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]* // CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]] // CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8** -// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]] +// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null) [[NUW]] // CHECK-NEXT: call void @__cxa_end_catch() [[NUW]] void test3_helper(void); @@ -77,9 +77,9 @@ void test3(void) { // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]* // CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8** // CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8* -// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]] +// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]] // CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8** -// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]] +// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]]) [[NUW]] // CHECK-NEXT: call void @__cxa_end_catch() [[NUW]] namespace test4 { @@ -112,11 +112,11 @@ namespace test4 { // CHECK-NEXT: br label // CHECK: [[AFTER:%.*]] = phi i8** [ [[ARRAYEND]], {{%.*}} ], [ [[ELT:%.*]], {{%.*}} ] // CHECK-NEXT: [[ELT]] = getelementptr inbounds i8*, i8** [[AFTER]], i64 -1 - // CHECK-NEXT: call void @objc_storeStrong(i8** [[ELT]], i8* null) [[NUW]] + // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[ELT]], i8* null) [[NUW]] // CHECK-NEXT: [[DONE:%.*]] = icmp eq i8** [[ELT]], [[ARRAYBEGIN]] // CHECK-NEXT: br i1 [[DONE]], // - Next, destroy single. - // CHECK: call void @objc_storeStrong(i8** [[SINGLE]], i8* null) [[NUW]] + // CHECK: call void @llvm.objc.storeStrong(i8** [[SINGLE]], i8* null) [[NUW]] // CHECK: br label // CHECK: resume } diff --git a/test/CodeGenObjCXX/arc-forwarded-lambda-call.mm b/test/CodeGenObjCXX/arc-forwarded-lambda-call.mm index 0a575c7697..5a5cb42067 100644 --- a/test/CodeGenObjCXX/arc-forwarded-lambda-call.mm +++ b/test/CodeGenObjCXX/arc-forwarded-lambda-call.mm @@ -5,8 +5,8 @@ void test0(id x) { test0_helper([=]() { return x; }); // CHECK-LABEL: define internal i8* @___Z5test0P11objc_object_block_invoke // CHECK: [[T0:%.*]] = call i8* @"_ZZ5test0P11objc_objectENK3$_0clEv" - // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]]) - // CHECK-NEXT: [[T2:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T1]]) + // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]]) + // CHECK-NEXT: [[T2:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T1]]) // CHECK-NEXT: ret i8* [[T2]] } @@ -28,8 +28,8 @@ void test1() { test1_helper([](){ return test1_rv; }); // CHECK-LABEL: define internal i8* @"_ZZ5test1vEN3$_18__invokeEv" // CHECK: [[T0:%.*]] = call i8* @"_ZZ5test1vENK3$_1clEv" - // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]]) - // CHECK-NEXT: [[T2:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T1]]) + // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]]) + // CHECK-NEXT: [[T2:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T1]]) // CHECK-NEXT: ret i8* [[T2]] } diff --git a/test/CodeGenObjCXX/arc-globals.mm b/test/CodeGenObjCXX/arc-globals.mm index a03ac9948b..d5116ee96c 100644 --- a/test/CodeGenObjCXX/arc-globals.mm +++ b/test/CodeGenObjCXX/arc-globals.mm @@ -7,21 +7,21 @@ id getObject(); // CHECK-LABEL: define internal void @__cxx_global_var_init // CHECK: call i8* @_Z9getObjectv -// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue +// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue // CHECK-NEXT: {{store i8*.*@global_obj}} // CHECK-NEXT: ret void id global_obj = getObject(); // CHECK-LABEL: define internal void @__cxx_global_var_init // CHECK: call i8* @_Z9getObjectv -// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue +// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue // CHECK-NEXT: {{store i8*.*@global_obj2}} // CHECK-NEXT: ret void id global_obj2 = getObject(); // CHECK-LABEL: define internal void @_GLOBAL__sub_I_arc_globals.mm -// CHECK: call i8* @objc_autoreleasePoolPush() +// CHECK: call i8* @llvm.objc.autoreleasePoolPush() // CHECK-NEXT: call void @__cxx_global_var_init // CHECK-NEXT: call void @__cxx_global_var_init.1 -// CHECK-NEXT: call void @objc_autoreleasePoolPop( +// CHECK-NEXT: call void @llvm.objc.autoreleasePoolPop( // CHECK-NEXT: ret void diff --git a/test/CodeGenObjCXX/arc-indirect.mm b/test/CodeGenObjCXX/arc-indirect.mm index 6982bac041..49fdc51e46 100644 --- a/test/CodeGenObjCXX/arc-indirect.mm +++ b/test/CodeGenObjCXX/arc-indirect.mm @@ -19,4 +19,4 @@ struct S { // CHECK-DARWIN: define internal void @"\01-[C object:struct:]"(<{ %0*, i8*, i8*, %struct.S, [3 x i8] }>* inalloca) // CHECK: %obj = getelementptr inbounds <{ %0*, i8*, i8*, %struct.S, [3 x i8] }>, <{ %0*, i8*, i8*, %struct.S, [3 x i8] }>* %0, i32 0, i32 2 // CHECK: %[[INSTANCE:[0-9]+]] = load i8*, i8** %obj, align 4 -// CHECK: call void @objc_storeStrong(i8** %obj, i8* %[[INSTANCE]]) +// CHECK: call void @llvm.objc.storeStrong(i8** %obj, i8* %[[INSTANCE]]) diff --git a/test/CodeGenObjCXX/arc-move.mm b/test/CodeGenObjCXX/arc-move.mm index def2cea956..a43b9bc604 100644 --- a/test/CodeGenObjCXX/arc-move.mm +++ b/test/CodeGenObjCXX/arc-move.mm @@ -6,7 +6,7 @@ void simple_move(__strong id &x, __strong id &y) { // CHECK: store i8* null // CHECK: = load i8*, i8** // CHECK: store i8* - // CHECK-NEXT: call void @objc_release + // CHECK-NEXT: call void @llvm.objc.release x = static_cast<__strong id&&>(y); // CHECK-NEXT: ret void } @@ -39,7 +39,7 @@ void library_move(__strong id &x, __strong id &y) { // CHECK: load i8**, i8*** // CHECK-NEXT: load i8*, i8** // CHECK-NEXT: store i8* - // CHECK-NEXT: call void @objc_release + // CHECK-NEXT: call void @llvm.objc.release // CHECK-NEXT: ret void x = move(y); } @@ -66,7 +66,7 @@ void library_move(__strong id &y) { // CHECK-NEXT: [[IPTR2:%.*]] = bitcast i32* [[I]] to i8* // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[IPTR2]]) // CHECK-NEXT: [[OBJ:%[a-zA-Z0-9]+]] = load i8*, i8** [[X]] - // CHECK-NEXT: call void @objc_release(i8* [[OBJ]]) + // CHECK-NEXT: call void @llvm.objc.release(i8* [[OBJ]]) // CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8* // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]]) // CHECK-NEXT: ret void @@ -77,9 +77,9 @@ void const_move(const __strong id &x) { // CHECK: [[Y:%.*]] = alloca i8*, // CHECK: [[X:%.*]] = call dereferenceable({{[0-9]+}}) i8** @_Z4moveIRU8__strongKP11objc_objectEON16remove_referenceIT_E4typeEOS5_( // CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]] - // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) + // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]]) // CHECK-NEXT: store i8* [[T1]], i8** [[Y]] // CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]] - // CHECK-NEXT: call void @objc_release(i8* [[T0]]) + // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) id y = move(x); } diff --git a/test/CodeGenObjCXX/arc-new-delete.mm b/test/CodeGenObjCXX/arc-new-delete.mm index 9fb5781990..0f66056be6 100644 --- a/test/CodeGenObjCXX/arc-new-delete.mm +++ b/test/CodeGenObjCXX/arc-new-delete.mm @@ -8,8 +8,8 @@ typedef __weak id weak_id; void test_new(id invalue) { // CHECK: [[INVALUEADDR:%.*]] = alloca i8* // UNOPT-NEXT: store i8* null, i8** [[INVALUEADDR]] - // UNOPT-NEXT: call void @objc_storeStrong(i8** [[INVALUEADDR]], i8* [[INVALUE:%.*]]) - // OPT-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[INVALUE:%.*]]) + // UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[INVALUEADDR]], i8* [[INVALUE:%.*]]) + // OPT-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* [[INVALUE:%.*]]) // OPT-NEXT: store i8* [[T0]], i8** [[INVALUEADDR]] // CHECK: call i8* @_Znwm @@ -19,7 +19,7 @@ void test_new(id invalue) { // CHECK: call i8* @_Znwm // CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}} // UNOPT-NEXT: store i8* null, i8** - // OPT-NEXT: call i8* @objc_initWeak(i8** {{.*}}, i8* null) + // OPT-NEXT: call i8* @llvm.objc.initWeak(i8** {{.*}}, i8* null) new weak_id; // CHECK: call i8* @_Znwm @@ -29,20 +29,20 @@ void test_new(id invalue) { // CHECK: call i8* @_Znwm // CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}} // UNOPT-NEXT: store i8* null, i8** - // OPT-NEXT: call i8* @objc_initWeak(i8** {{.*}}, i8* null) + // OPT-NEXT: call i8* @llvm.objc.initWeak(i8** {{.*}}, i8* null) new __weak id; // CHECK: call i8* @_Znwm - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain // CHECK: store i8* new __strong id(invalue); // CHECK: call i8* @_Znwm - // CHECK: call i8* @objc_initWeak + // CHECK: call i8* @llvm.objc.initWeak new __weak id(invalue); - // UNOPT: call void @objc_storeStrong - // OPT: call void @objc_release + // UNOPT: call void @llvm.objc.storeStrong + // OPT: call void @llvm.objc.release // CHECK: ret void } @@ -63,13 +63,13 @@ void test_array_new() { // CHECK-LABEL: define void @_Z11test_deletePU8__strongP11objc_objectPU6__weakS0_ void test_delete(__strong id *sptr, __weak id *wptr) { // CHECK: br i1 - // UNOPT: call void @objc_storeStrong(i8** {{.*}}, i8* null) + // UNOPT: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null) // OPT: load i8*, i8** - // OPT-NEXT: call void @objc_release + // OPT-NEXT: call void @llvm.objc.release // CHECK: call void @_ZdlPv delete sptr; - // CHECK: call void @objc_destroyWeak + // CHECK: call void @llvm.objc.destroyWeak // CHECK: call void @_ZdlPv delete wptr; @@ -84,9 +84,9 @@ void test_array_delete(__strong id *sptr, __weak id *wptr) { // CHECK-NEXT: icmp eq i8** [[BEGIN]], [[END]] // CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], // CHECK-NEXT: [[CUR]] = getelementptr inbounds i8*, i8** [[PAST]], i64 -1 - // UNOPT-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null) + // UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[CUR]], i8* null) // OPT-NEXT: [[T0:%.*]] = load i8*, i8** [[CUR]] - // OPT-NEXT: objc_release(i8* [[T0]]) + // OPT-NEXT: llvm.objc.release(i8* [[T0]]) // CHECK-NEXT: icmp eq i8** [[CUR]], [[BEGIN]] // CHECK: call void @_ZdaPv delete [] sptr; @@ -97,7 +97,7 @@ void test_array_delete(__strong id *sptr, __weak id *wptr) { // CHECK-NEXT: icmp eq i8** [[BEGIN]], [[END]] // CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], // CHECK-NEXT: [[CUR]] = getelementptr inbounds i8*, i8** [[PAST]], i64 -1 - // CHECK-NEXT: call void @objc_destroyWeak(i8** [[CUR]]) + // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[CUR]]) // CHECK-NEXT: icmp eq i8** [[CUR]], [[BEGIN]] // CHECK: call void @_ZdaPv delete [] wptr; diff --git a/test/CodeGenObjCXX/arc-pseudo-destructors.mm b/test/CodeGenObjCXX/arc-pseudo-destructors.mm index b79d9a3447..191712d79c 100644 --- a/test/CodeGenObjCXX/arc-pseudo-destructors.mm +++ b/test/CodeGenObjCXX/arc-pseudo-destructors.mm @@ -4,18 +4,18 @@ void test_objc_object_pseudo_dtor(__strong id *ptr, __weak id *wptr) { // CHECK: load i8**, i8*** // CHECK-NEXT: load i8*, i8** - // CHECK-NEXT: call void @objc_release + // CHECK-NEXT: call void @llvm.objc.release ptr->~id(); - // CHECK: call void @objc_destroyWeak(i8** {{%.*}}) + // CHECK: call void @llvm.objc.destroyWeak(i8** {{%.*}}) wptr->~id(); // CHECK: load i8**, i8*** // CHECK-NEXT: load i8*, i8** - // CHECK-NEXT: call void @objc_release + // CHECK-NEXT: call void @llvm.objc.release (*ptr).~id(); - // CHECK: call void @objc_destroyWeak(i8** {{%.*}}) + // CHECK: call void @llvm.objc.destroyWeak(i8** {{%.*}}) (*wptr).~id(); // CHECK: ret void } diff --git a/test/CodeGenObjCXX/arc-references.mm b/test/CodeGenObjCXX/arc-references.mm index 983b211dfb..aa0b85f2a0 100644 --- a/test/CodeGenObjCXX/arc-references.mm +++ b/test/CodeGenObjCXX/arc-references.mm @@ -10,17 +10,17 @@ void callee(); // CHECK-LABEL: define void @_Z5test0v() void test0() { // CHECK: call i8* @_Z9getObjectv - // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue + // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue const __strong id &ref1 = getObject(); // CHECK: call void @_Z6calleev callee(); // CHECK: call i8* @_Z9getObjectv - // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue - // CHECK-NEXT: call i8* @objc_autorelease + // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue + // CHECK-NEXT: call i8* @llvm.objc.autorelease const __autoreleasing id &ref2 = getObject(); // CHECK: call void @_Z6calleev callee(); - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: ret } @@ -39,12 +39,12 @@ typedef __strong id strong_id; //CHECK: define void @_Z5test3v void test3() { // CHECK: [[REF:%.*]] = alloca i8**, align 8 - // CHECK: call i8* @objc_initWeak + // CHECK: call i8* @llvm.objc.initWeak // CHECK-NEXT: store i8** const __weak id &ref = strong_id(); // CHECK-NEXT: call void @_Z6calleev() callee(); - // CHECK-NEXT: call void @objc_destroyWeak + // CHECK-NEXT: call void @llvm.objc.destroyWeak // CHECK-NEXT: [[PTR:%.*]] = bitcast i8*** [[REF]] to i8* // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR]]) // CHECK-NEXT: ret void @@ -52,11 +52,11 @@ void test3() { // CHECK-LABEL: define void @_Z5test4RU8__strongP11objc_object void test4(__strong id &x) { - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain __strong A* const &ar = x; // CHECK: store i32 17, i32* int i = 17; - // CHECK: call void @objc_release( + // CHECK: call void @llvm.objc.release( // CHECK: ret void } @@ -66,14 +66,14 @@ void sink(__strong A* &&); void test5(__strong id &x) { // CHECK: [[REFTMP:%.*]] = alloca {{%.*}}*, align 8 // CHECK: [[I:%.*]] = alloca i32, align 4 - // CHECK: [[OBJ_ID:%.*]] = call i8* @objc_retain( + // CHECK: [[OBJ_ID:%.*]] = call i8* @llvm.objc.retain( // CHECK-NEXT: [[OBJ_A:%.*]] = bitcast i8* [[OBJ_ID]] to [[A:%[a-zA-Z0-9]+]]* // CHECK-NEXT: store [[A]]* [[OBJ_A]], [[A]]** [[REFTMP:%[a-zA-Z0-9]+]] // CHECK-NEXT: call void @_Z4sinkOU8__strongP1A sink(x); // CHECK-NEXT: [[OBJ_A:%[a-zA-Z0-9]+]] = load [[A]]*, [[A]]** [[REFTMP]] // CHECK-NEXT: [[OBJ_ID:%[a-zA-Z0-9]+]] = bitcast [[A]]* [[OBJ_A]] to i8* - // CHECK-NEXT: call void @objc_release + // CHECK-NEXT: call void @llvm.objc.release // CHECK-NEXT: [[IPTR1:%.*]] = bitcast i32* [[I]] to i8* // CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[IPTR1]]) // CHECK-NEXT: store i32 17, i32 @@ -85,7 +85,7 @@ void test5(__strong id &x) { // CHECK-LABEL: define internal void @__cxx_global_var_init( // CHECK: call i8* @_Z9getObjectv -// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue +// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue const __strong id &global_ref = getObject(); // Note: we intentionally don't release the object. diff --git a/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm b/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm index c4ab34ea0e..fa9b4219f5 100644 --- a/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm +++ b/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm @@ -15,8 +15,8 @@ void foo() { // CHECK: [[T0:%.*]] = load {{%.*}} {{%.*}}, align 8 // CHECK: [[T1:%.*]] = bitcast {{%.*}} [[T0]] to i8* -// call i8* @objc_retainAutorelease(i8* [[T1]]) nounwind +// call i8* @llvm.objc.retainAutorelease(i8* [[T1]]) nounwind // CHECK: [[T2:%.*]] = load {{%.*}} {{%.*}}, align 8 // CHECK: [[T3:%.*]] = bitcast {{%.*}} [[T2]] to i8* -// call i8* @objc_retainAutorelease(i8* [[T3]]) nounwind +// call i8* @llvm.objc.retainAutorelease(i8* [[T3]]) nounwind diff --git a/test/CodeGenObjCXX/arc-special-member-functions.mm b/test/CodeGenObjCXX/arc-special-member-functions.mm index d620187d70..04ffbbe021 100644 --- a/test/CodeGenObjCXX/arc-special-member-functions.mm +++ b/test/CodeGenObjCXX/arc-special-member-functions.mm @@ -91,7 +91,7 @@ void test_ObjCMember_copy_assign(ObjCMember m1, ObjCMember m2) { // Implicitly-generated copy assignment operator for ObjCMember // CHECK: {{define linkonce_odr.*@_ZN10ObjCMemberaSERKS_}} -// CHECK: call void @objc_storeStrong +// CHECK: call void @llvm.objc.storeStrong // CHECK: ret // CHECK-LABEL: define void @_Z47test_ObjCArrayMember_default_construct_destructv @@ -120,7 +120,7 @@ void test_ObjCArrayMember_copy_assign(ObjCArrayMember m1, ObjCArrayMember m2) { // Implicitly-generated copy assignment operator for ObjCArrayMember // CHECK: {{define linkonce_odr.*@_ZN15ObjCArrayMemberaSERKS_}} -// CHECK: call void @objc_storeStrong +// CHECK: call void @llvm.objc.storeStrong // CHECK-NEXT: br label // CHECK: ret @@ -155,13 +155,13 @@ void test_ObjCBlockMember_copy_assign(ObjCBlockMember m1, ObjCBlockMember m2) { // CHECK: [[T0:%.*]] = getelementptr inbounds [[T:%.*]], [[T:%.*]]* {{%.*}}, i32 0, i32 0 // CHECK-NEXT: [[T1:%.*]] = load i32 (i32)*, i32 (i32)** [[T0]], align 8 // CHECK-NEXT: [[T2:%.*]] = bitcast i32 (i32)* [[T1]] to i8* -// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retainBlock(i8* [[T2]]) +// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T2]]) // CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i32 (i32)* // CHECK-NEXT: [[T5:%.*]] = getelementptr inbounds [[T]], [[T]]* {{%.*}}, i32 0, i32 0 // CHECK-NEXT: [[T6:%.*]] = load i32 (i32)*, i32 (i32)** [[T5]], align 8 // CHECK-NEXT: store i32 (i32)* [[T4]], i32 (i32)** [[T5]] // CHECK-NEXT: [[T7:%.*]] = bitcast i32 (i32)* [[T6]] to i8* -// CHECK-NEXT: call void @objc_release(i8* [[T7]]) +// CHECK-NEXT: call void @llvm.objc.release(i8* [[T7]]) // CHECK-NEXT: ret // Check that the Weak object passed to this constructor is not destructed after @@ -179,13 +179,13 @@ void test_ObjCBlockMember_copy_assign(ObjCBlockMember m1, ObjCBlockMember m2) { // Implicitly-generated destructor for ObjCMember // CHECK-LABEL: define linkonce_odr void @_ZN10ObjCMemberD2Ev -// CHECK: call void @objc_storeStrong +// CHECK: call void @llvm.objc.storeStrong // CHECK: ret void // Implicitly-generated copy constructor for ObjCMember // CHECK-LABEL: define linkonce_odr void @_ZN10ObjCMemberC2ERKS_ // CHECK-NOT: objc_release -// CHECK: call i8* @objc_retain +// CHECK: call i8* @llvm.objc.retain // CHECK-NEXT: store i8* // CHECK-NEXT: ret void @@ -201,14 +201,14 @@ void test_ObjCBlockMember_copy_assign(ObjCBlockMember m1, ObjCBlockMember m2) { // CHECK-NEXT: br label // CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ] // CHECK-NEXT: [[CUR]] = getelementptr inbounds i8*, i8** [[PAST]], i64 -1 -// CHECK-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null) +// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[CUR]], i8* null) // CHECK-NEXT: [[T1:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]] // CHECK-NEXT: br i1 [[T1]], // CHECK: ret void // Implicitly-generated copy constructor for ObjCArrayMember // CHECK-LABEL: define linkonce_odr void @_ZN15ObjCArrayMemberC2ERKS_ -// CHECK: call i8* @objc_retain +// CHECK: call i8* @llvm.objc.retain // CHECK-NEXT: store i8* // CHECK: br i1 // CHECK: ret @@ -220,11 +220,11 @@ void test_ObjCBlockMember_copy_assign(ObjCBlockMember m1, ObjCBlockMember m2) { // Implicitly-generated destructor for ObjCBlockMember // CHECK-LABEL: define linkonce_odr void @_ZN15ObjCBlockMemberD2Ev -// CHECK: call void @objc_storeStrong(i8* +// CHECK: call void @llvm.objc.storeStrong(i8* // CHECK: ret // Implicitly-generated copy constructor for ObjCBlockMember // CHECK-LABEL: define linkonce_odr void @_ZN15ObjCBlockMemberC2ERKS_ -// CHECK: call i8* @objc_retainBlock +// CHECK: call i8* @llvm.objc.retainBlock // CHECK: ret diff --git a/test/CodeGenObjCXX/arc-weak.mm b/test/CodeGenObjCXX/arc-weak.mm index 8fd03379aa..cb1bc95c93 100644 --- a/test/CodeGenObjCXX/arc-weak.mm +++ b/test/CodeGenObjCXX/arc-weak.mm @@ -15,9 +15,9 @@ void test0(__weak B **src) { // CHECK-NEXT: [[T1:%.*]] = bitcast [[B]]** [[T0]] to [[A]]** // CHECK-NEXT: [[T2:%.*]] = bitcast [[A]]** [[DEST]] to i8** // CHECK-NEXT: [[T3:%.*]] = bitcast [[A]]** [[T1]] to i8** -// CHECK-NEXT: call void @objc_copyWeak(i8** [[T2]], i8** [[T3]]) +// CHECK-NEXT: call void @llvm.objc.copyWeak(i8** [[T2]], i8** [[T3]]) // CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]** [[DEST]] to i8** -// CHECK: call void @objc_destroyWeak(i8** [[T0]]) +// CHECK: call void @llvm.objc.destroyWeak(i8** [[T0]]) void test1(__weak B **src) { __weak A *dest = static_cast<__weak B*&&>(*src); @@ -29,6 +29,6 @@ void test1(__weak B **src) { // CHECK-NEXT: [[T1:%.*]] = bitcast [[B]]** [[T0]] to [[A]]** // CHECK-NEXT: [[T2:%.*]] = bitcast [[A]]** [[DEST]] to i8** // CHECK-NEXT: [[T3:%.*]] = bitcast [[A]]** [[T1]] to i8** -// CHECK-NEXT: call void @objc_moveWeak(i8** [[T2]], i8** [[T3]]) +// CHECK-NEXT: call void @llvm.objc.moveWeak(i8** [[T2]], i8** [[T3]]) // CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]** [[DEST]] to i8** -// CHECK: call void @objc_destroyWeak(i8** [[T0]]) +// CHECK: call void @llvm.objc.destroyWeak(i8** [[T0]]) diff --git a/test/CodeGenObjCXX/arc.mm b/test/CodeGenObjCXX/arc.mm index 5e66206ad5..b7f099d4e8 100644 --- a/test/CodeGenObjCXX/arc.mm +++ b/test/CodeGenObjCXX/arc.mm @@ -20,21 +20,21 @@ void test0(__weak id *wp, __weak volatile id *wvp) { // TODO: in the non-volatile case, we do not need to be reloading. // CHECK: [[T0:%.*]] = call i8* @_Z12test0_helperv() - // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]]) + // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]]) // CHECK-NEXT: [[T2:%.*]] = load i8**, i8*** {{%.*}}, align 8 - // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]]) - // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retain(i8* [[T3]]) + // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]]) + // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retain(i8* [[T3]]) // CHECK-NEXT: store i8* [[T4]], i8** - // CHECK-NEXT: call void @objc_release(i8* [[T1]]) + // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) id x = *wp = test0_helper(); // CHECK: [[T0:%.*]] = call i8* @_Z12test0_helperv() - // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]]) + // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]]) // CHECK-NEXT: [[T2:%.*]] = load i8**, i8*** {{%.*}}, align 8 - // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]]) - // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T2]]) + // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]]) + // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T2]]) // CHECK-NEXT: store i8* [[T4]], i8** - // CHECK-NEXT: call void @objc_release(i8* [[T1]]) + // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) id y = *wvp = test0_helper(); } @@ -69,7 +69,7 @@ void test34(int cond) { // CHECK-NEXT: store i8* null, i8** [[STRONG]] // CHECK-NEXT: [[WEAKP:%.*]] = bitcast i8** [[WEAK]] to i8* // CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[WEAKP]]) - // CHECK-NEXT: call i8* @objc_initWeak(i8** [[WEAK]], i8* null) + // CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[WEAK]], i8* null) // CHECK-NEXT: [[T0:%.*]] = load i32, i32* [[COND]] // CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0 @@ -85,11 +85,11 @@ void test34(int cond) { // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null // CHECK-NEXT: br i1 [[T0]], // CHECK: [[T0:%.*]] = load i8*, i8** [[TEMP1]] - // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) + // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]]) // CHECK-NEXT: call void (...) @clang.arc.use(i8* [[W0]]) // CHECK-NEXT: [[T2:%.*]] = load i8*, i8** [[ARG]] // CHECK-NEXT: store i8* [[T1]], i8** [[ARG]] - // CHECK-NEXT: call void @objc_release(i8* [[T2]]) + // CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]]) // CHECK-NEXT: br label // CHECK: [[T0:%.*]] = load i32, i32* [[COND]] @@ -99,7 +99,7 @@ void test34(int cond) { // CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i8** null, i8** [[TEMP2]] // CHECK-NEXT: store i1 false, i1* [[CONDCLEANUP]] // CHECK-NEXT: br i1 [[T0]], - // CHECK: [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[ARG]]) + // CHECK: [[T0:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[ARG]]) // CHECK-NEXT: store i8* [[T0]], i8** [[CONDCLEANUPSAVE]] // CHECK-NEXT: store i1 true, i1* [[CONDCLEANUP]] // CHECK-NEXT: store i8* [[T0]], i8** [[TEMP2]] @@ -108,10 +108,10 @@ void test34(int cond) { // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null // CHECK-NEXT: br i1 [[T0]], // CHECK: [[T0:%.*]] = load i8*, i8** [[TEMP2]] - // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[ARG]], i8* [[T0]]) + // CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[ARG]], i8* [[T0]]) // CHECK-NEXT: br label - // CHECK: call void @objc_destroyWeak(i8** [[WEAK]]) + // CHECK: call void @llvm.objc.destroyWeak(i8** [[WEAK]]) // CHECK: ret void } @@ -126,36 +126,36 @@ struct Test35_Helper { void test35(Test35_Helper x0, Test35_Helper *x0p) { // CHECK: call void @llvm.lifetime.start // CHECK: call i8* @_ZN13Test35_Helper11makeObject1Ev - // CHECK-NOT: call i8* @objc_retain + // CHECK-NOT: call i8* @llvm.objc.retain id obj1 = Test35_Helper::makeObject1(); // CHECK: call void @llvm.lifetime.start // CHECK: call i8* @_ZN13Test35_Helper11makeObject2Ev - // CHECK-NOT: call i8* @objc_retain + // CHECK-NOT: call i8* @llvm.objc.retain id obj2 = x0.makeObject2(); // CHECK: call void @llvm.lifetime.start // CHECK: call i8* @_ZN13Test35_Helper11makeObject2Ev - // CHECK-NOT: call i8* @objc_retain + // CHECK-NOT: call i8* @llvm.objc.retain id obj3 = x0p->makeObject2(); id (Test35_Helper::*pmf)() __attribute__((ns_returns_retained)) = &Test35_Helper::makeObject2; // CHECK: call void @llvm.lifetime.start // CHECK: call i8* % - // CHECK-NOT: call i8* @objc_retain + // CHECK-NOT: call i8* @llvm.objc.retain id obj4 = (x0.*pmf)(); // CHECK: call void @llvm.lifetime.start // CHECK: call i8* % - // CHECK-NOT: call i8* @objc_retain + // CHECK-NOT: call i8* @llvm.objc.retain id obj5 = (x0p->*pmf)(); - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end // CHECK-NEXT: ret void } @@ -164,36 +164,36 @@ void test35(Test35_Helper x0, Test35_Helper *x0p) { void test35b(Test35_Helper x0, Test35_Helper *x0p) { // CHECK: call void @llvm.lifetime.start // CHECK: call i8* @_ZN13Test35_Helper11makeObject3Ev - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain id obj1 = Test35_Helper::makeObject3(); // CHECK: call void @llvm.lifetime.start // CHECK: call i8* @_ZN13Test35_Helper11makeObject4Ev - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain id obj2 = x0.makeObject4(); // CHECK: call void @llvm.lifetime.start // CHECK: call i8* @_ZN13Test35_Helper11makeObject4Ev - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain id obj3 = x0p->makeObject4(); id (Test35_Helper::*pmf)() = &Test35_Helper::makeObject4; // CHECK: call void @llvm.lifetime.start // CHECK: call i8* % - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain id obj4 = (x0.*pmf)(); // CHECK: call void @llvm.lifetime.start // CHECK: call i8* % - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain id obj5 = (x0p->*pmf)(); - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end // CHECK-NEXT: ret void } @@ -201,10 +201,10 @@ void test35b(Test35_Helper x0, Test35_Helper *x0p) { // rdar://problem/9603128 // CHECK-LABEL: define i8* @_Z6test36P11objc_object( id test36(id z) { - // CHECK: objc_retain - // CHECK: objc_retain - // CHECK: objc_release - // CHECK: objc_autoreleaseReturnValue + // CHECK: llvm.objc.retain + // CHECK: llvm.objc.retain + // CHECK: llvm.objc.release + // CHECK: llvm.objc.autoreleaseReturnValue return z; } @@ -224,7 +224,7 @@ template void test37<Test37>(Test37 *a); // CHECK-LABEL: define weak_odr void @_Z6test37I6Test37EvPT_( // CHECK: [[T0:%.*]] = call [[NSARRAY]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to [[NSARRAY]]* (i8*, i8*)*)( // CHECK-NEXT: [[T1:%.*]] = bitcast [[NSARRAY]]* [[T0]] to i8* -// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]]) +// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]]) // CHECK-NEXT: [[COLL:%.*]] = bitcast i8* [[T2]] to [[NSARRAY]]* // Make sure it's not immediately released before starting the iteration. @@ -242,7 +242,7 @@ template void test37<Test37>(Test37 *a); // This bitcast is for the final release. // CHECK: [[T0:%.*]] = bitcast [[NSARRAY]]* [[COLL]] to i8* -// CHECK-NEXT: call void @objc_release(i8* [[T0]]) +// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) template<typename T> void send_release() { @@ -252,10 +252,10 @@ void send_release() { // CHECK-LABEL: define weak_odr void @_Z12send_releaseIiEvv( // CHECK: call %0* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend // CHECK-NEXT: bitcast -// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue +// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue // CHECK-NEXT: bitcast // CHECK-NEXT: bitcast -// CHECK-NEXT: call void @objc_release +// CHECK-NEXT: call void @llvm.objc.release // CHECK-NEXT: ret void template void send_release<int>(); @@ -268,9 +268,9 @@ Test37 *instantiate_init() { // CHECK-LABEL: define weak_odr %2* @_Z16instantiate_initIiEP6Test37v // CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend // CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend -// CHECK: call i8* @objc_retain -// CHECK: call void @objc_release -// CHECK: call i8* @objc_autoreleaseReturnValue +// CHECK: call i8* @llvm.objc.retain +// CHECK: call void @llvm.objc.release +// CHECK: call i8* @llvm.objc.autoreleaseReturnValue template Test37* instantiate_init<int>(); // Just make sure that the AST invariants hold properly here, @@ -322,7 +322,7 @@ template void test40_helper<int>(); // CHECK-NEXT: store i8* [[T0]], i8** [[TEMP]] // CHECK: @objc_msgSend // CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[TEMP]] -// CHECK-NEXT: call i8* @objc_retain(i8* [[T0]]) +// CHECK-NEXT: call i8* @llvm.objc.retain(i8* [[T0]]) // Check that moves out of __weak variables are compiled to use objc_moveWeak. void test41(__weak id &&x) { @@ -332,5 +332,5 @@ void test41(__weak id &&x) { // CHECK: [[X:%.*]] = alloca i8** // CHECK: [[Y:%.*]] = alloca i8* // CHECK: [[T0:%.*]] = load i8**, i8*** [[X]] -// CHECK-NEXT: call void @objc_moveWeak(i8** [[Y]], i8** [[T0]]) -// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Y]]) +// CHECK-NEXT: call void @llvm.objc.moveWeak(i8** [[Y]], i8** [[T0]]) +// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Y]]) diff --git a/test/CodeGenObjCXX/block-nested-in-lambda.mm b/test/CodeGenObjCXX/block-nested-in-lambda.mm index a538d1bd2b..4122d89e8f 100644 --- a/test/CodeGenObjCXX/block-nested-in-lambda.mm +++ b/test/CodeGenObjCXX/block-nested-in-lambda.mm @@ -51,27 +51,27 @@ void test0() { // CHECK: store %[[STRUCT_BLOCK_DESCRIPTOR]]* bitcast ({ i64, i64, i8*, i8*, i8*, i64 }* @"__block_descriptor_56_8_32s40s_e5_v8@?0l" to %[[STRUCT_BLOCK_DESCRIPTOR]]*), %[[STRUCT_BLOCK_DESCRIPTOR]]** %[[BLOCK_DESCRIPTOR]], align 8 // CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_8_32s40s( -// CHECK-NOT: call void @objc_storeStrong( +// CHECK-NOT: call void @llvm.objc.storeStrong( // CHECK: %[[V4:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 5 // CHECK: %[[V5:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 5 // CHECK: %[[BLOCKCOPY_SRC:.*]] = load i8*, i8** %[[V4]], align 8 // CHECK: store i8* null, i8** %[[V5]], align 8 -// CHECK: call void @objc_storeStrong(i8** %[[V5]], i8* %[[BLOCKCOPY_SRC]]) +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V5]], i8* %[[BLOCKCOPY_SRC]]) // CHECK: %[[V6:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 6 // CHECK: %[[V7:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 6 // CHECK: %[[BLOCKCOPY_SRC2:.*]] = load i8*, i8** %[[V6]], align 8 // CHECK: store i8* null, i8** %[[V7]], align 8 -// CHECK: call void @objc_storeStrong(i8** %[[V7]], i8* %[[BLOCKCOPY_SRC2]]) -// CHECK-NOT: call void @objc_storeStrong( +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V7]], i8* %[[BLOCKCOPY_SRC2]]) +// CHECK-NOT: call void @llvm.objc.storeStrong( // CHECK: ret void // CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block_8_32s40s( // CHECK: %[[V2:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 5 // CHECK: %[[V3:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 6 -// CHECK-NOT: call void @objc_storeStrong( -// CHECK: call void @objc_storeStrong(i8** %[[V3]], i8* null) -// CHECK: call void @objc_storeStrong(i8** %[[V2]], i8* null) -// CHECK-NOT: call void @objc_storeStrong( +// CHECK-NOT: call void @llvm.objc.storeStrong( +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V3]], i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** %[[V2]], i8* null) +// CHECK-NOT: call void @llvm.objc.storeStrong( // CHECK: ret void void test1() { diff --git a/test/CodeGenObjCXX/destroy.mm b/test/CodeGenObjCXX/destroy.mm index 371f729afa..4a0451ec94 100644 --- a/test/CodeGenObjCXX/destroy.mm +++ b/test/CodeGenObjCXX/destroy.mm @@ -44,7 +44,7 @@ void test4() { // CHECK: call void @_ZN8tderivedIiED1Ev // CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev -// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null) // CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev -// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null) +// CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null) diff --git a/test/CodeGenObjCXX/lambda-expressions.mm b/test/CodeGenObjCXX/lambda-expressions.mm index f60655c61b..ff7450f206 100644 --- a/test/CodeGenObjCXX/lambda-expressions.mm +++ b/test/CodeGenObjCXX/lambda-expressions.mm @@ -20,8 +20,8 @@ fp f() { auto x = []{ return 3; }; return x; } // ARC-LABEL: define internal i32 ()* @"_ZZ1fvENK3$_0cvU13block_pointerFivEEv" // ARC: store i8* bitcast (i8** @_NSConcreteStackBlock to i8*) // ARC: store i8* bitcast (i32 (i8*)* @"___ZZ1fvENK3$_0cvU13block_pointerFivEEv_block_invoke" to i8*) -// ARC: call i8* @objc_retainBlock -// ARC: call i8* @objc_autoreleaseReturnValue +// ARC: call i8* @llvm.objc.retainBlock +// ARC: call i8* @llvm.objc.autoreleaseReturnValue typedef int (^fp)(); fp global; @@ -35,8 +35,8 @@ void f2() { global = []{ return 3; }; } // ARC: define void @_Z2f2v() [[NUW:#[0-9]+]] { // ARC: store i8* bitcast (i32 (i8*)* @___Z2f2v_block_invoke to i8*), -// ARC: call i8* @objc_retainBlock -// ARC: call void @objc_release +// ARC: call i8* @llvm.objc.retainBlock +// ARC: call void @llvm.objc.release // ARC-LABEL: define internal i32 @___Z2f2v_block_invoke // ARC: call i32 @"_ZZ2f2vENK3$_1clEv @@ -72,7 +72,7 @@ void take_block(void (^block)()) { block(); } // ARC: store i32 %{{.*}}, i32* %[[CAPTURE1]] // ARC-LABEL: define internal void @"_ZZ10-[Foo foo]ENK3$_4clEv"( -// ARC-NOT: @objc_storeStrong( +// ARC-NOT: @llvm.objc.storeStrong( // ARC: ret void // ARC: define internal void @"___ZZN13LambdaCapture4foo1ERiENK3$_3clEv_block_invoke" diff --git a/test/CodeGenObjCXX/literals.mm b/test/CodeGenObjCXX/literals.mm index a42070b00c..0a14d330bd 100644 --- a/test/CodeGenObjCXX/literals.mm +++ b/test/CodeGenObjCXX/literals.mm @@ -29,7 +29,7 @@ void test_array() { // CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 1, i8* [[TMP_CAST]]) // CHECK-NEXT: call void @_ZN1XC1Ev({{.*}} [[TMPX]]) // CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1XcvP11objc_objectEv - // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT0]]) + // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT0]]) // CHECK: store i8* [[RET0]], i8** [[ELEMENT0]] // Initializing the second element @@ -38,36 +38,36 @@ void test_array() { // CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 1, i8* [[TMP_CAST]]) // CHECK-NEXT: invoke void @_ZN1YC1Ev({{.*}} [[TMPY]]) // CHECK: [[OBJECT1:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1YcvP11objc_objectEv - // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT1]]) + // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT1]]) // CHECK: store i8* [[RET1]], i8** [[ELEMENT1]] // Build the array // CHECK: {{invoke.*@objc_msgSend}} - // CHECK: call i8* @objc_retainAutoreleasedReturnValue + // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue id arr = @[ X(), Y() ]; // Destroy temporaries // CHECK-NOT: ret void - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK-NOT: ret void // CHECK: invoke void @_ZN1YD1Ev // CHECK-NOT: ret void - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK-NEXT: call void @_ZN1XD1Ev // CHECK-NOT: ret void - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK-NEXT: [[PTR2:%.*]] = bitcast i8** [[ARR]] to i8* // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]]) // CHECK-NEXT: ret void // Check cleanups - // CHECK: call void @objc_release - // CHECK-NOT: call void @objc_release + // CHECK: call void @llvm.objc.release + // CHECK-NOT: call void @llvm.objc.release // CHECK: invoke void @_ZN1YD1Ev - // CHECK: call void @objc_release - // CHECK-NOT: call void @objc_release + // CHECK: call void @llvm.objc.release + // CHECK-NOT: call void @llvm.objc.release // CHECK: invoke void @_ZN1XD1Ev - // CHECK-NOT: call void @objc_release + // CHECK-NOT: call void @llvm.objc.release // CHECK: unreachable } @@ -83,43 +83,43 @@ void test_array_instantiation() { // CHECK: [[ELEMENT0:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[OBJECTS]], i64 0, i64 0 // CHECK: call void @_ZN1XC1Ev // CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1XcvP11objc_objectEv - // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT0]]) + // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT0]]) // CHECK: store i8* [[RET0]], i8** [[ELEMENT0]] // Initializing the second element // CHECK: [[ELEMENT1:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[OBJECTS]], i64 0, i64 1 // CHECK: invoke void @_ZN1YC1Ev // CHECK: [[OBJECT1:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1YcvP11objc_objectEv - // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT1]]) + // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT1]]) // CHECK: store i8* [[RET1]], i8** [[ELEMENT1]] // Build the array // CHECK: {{invoke.*@objc_msgSend}} - // CHECK: call i8* @objc_retainAutoreleasedReturnValue + // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue id arr = @[ X(), Y() ]; // Destroy temporaries // CHECK-NOT: ret void - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK-NOT: ret void // CHECK: invoke void @_ZN1YD1Ev // CHECK-NOT: ret void - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK-NEXT: call void @_ZN1XD1Ev // CHECK-NOT: ret void - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK-NEXT: [[PTR2]] = bitcast i8** [[ARR]] to i8* // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]]) // CHECK-NEXT: ret void // Check cleanups - // CHECK: call void @objc_release - // CHECK-NOT: call void @objc_release + // CHECK: call void @llvm.objc.release + // CHECK-NOT: call void @llvm.objc.release // CHECK: invoke void @_ZN1YD1Ev - // CHECK: call void @objc_release - // CHECK-NOT: call void @objc_release + // CHECK: call void @llvm.objc.release + // CHECK-NOT: call void @llvm.objc.release // CHECK: invoke void @_ZN1XD1Ev - // CHECK-NOT: call void @objc_release + // CHECK-NOT: call void @llvm.objc.release // CHECK: unreachable } diff --git a/test/CodeGenObjCXX/microsoft-abi-arc-param-order.mm b/test/CodeGenObjCXX/microsoft-abi-arc-param-order.mm index 910a7db734..50c2e4aa41 100644 --- a/test/CodeGenObjCXX/microsoft-abi-arc-param-order.mm +++ b/test/CodeGenObjCXX/microsoft-abi-arc-param-order.mm @@ -13,8 +13,8 @@ struct A { // CHECK: (<{ %struct.A, i8*, %struct.A, i8* }>* inalloca) void test_arc_order(A a, id __attribute__((ns_consumed)) b , A c, id __attribute__((ns_consumed)) d) { // CHECK: call x86_thiscallcc void @"??1A@@QAE@XZ"(%struct.A* %{{.*}}) - // CHECK: call void @objc_storeStrong(i8** %{{.*}}, i8* null) + // CHECK: call void @llvm.objc.storeStrong(i8** %{{.*}}, i8* null) // CHECK: call x86_thiscallcc void @"??1A@@QAE@XZ"(%struct.A* %{{.*}}) - // CHECK: call void @objc_storeStrong(i8** %{{.*}}, i8* null) + // CHECK: call void @llvm.objc.storeStrong(i8** %{{.*}}, i8* null) // CHECK: ret void } diff --git a/test/CodeGenObjCXX/mrc-weak.mm b/test/CodeGenObjCXX/mrc-weak.mm index 1cb191fe30..b89d76cf47 100644 --- a/test/CodeGenObjCXX/mrc-weak.mm +++ b/test/CodeGenObjCXX/mrc-weak.mm @@ -26,15 +26,15 @@ @implementation Foo // CHECK-LABEL: define internal void @"\01-[Foo .cxx_destruct]" -// CHECK: call void @objc_destroyWeak +// CHECK: call void @llvm.objc.destroyWeak @end void test1(__weak id x) {} // CHECK-LABEL: define void @_Z5test1P11objc_object( // CHECK: [[X:%.*]] = alloca i8*, -// CHECK-NEXT: objc_initWeak -// CHECK-NEXT: objc_destroyWeak +// CHECK-NEXT: llvm.objc.initWeak +// CHECK-NEXT: llvm.objc.destroyWeak // CHECK-NEXT: ret void void test2(id y) { @@ -45,8 +45,8 @@ void test2(id y) { // CHECK-NEXT: [[Z:%.*]] = alloca i8*, // CHECK-NEXT: store // CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]] -// CHECK-NEXT: call i8* @objc_initWeak(i8** [[Z]], i8* [[T0]]) -// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Z]]) +// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[Z]], i8* [[T0]]) +// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Z]]) // CHECK-NEXT: ret void void test3(id y) { @@ -59,8 +59,8 @@ void test3(id y) { // CHECK-NEXT: store // CHECK-NEXT: store i8* null, i8** [[Z]] // CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]] -// CHECK-NEXT: call i8* @objc_storeWeak(i8** [[Z]], i8* [[T0]]) -// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Z]]) +// CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[Z]], i8* [[T0]]) +// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Z]]) // CHECK-NEXT: ret void void test4(__weak id *p) { @@ -71,7 +71,7 @@ void test4(__weak id *p) { // CHECK-NEXT: [[Y:%.*]] = alloca i8*, // CHECK-NEXT: store // CHECK-NEXT: [[T0:%.*]] = load i8**, i8*** [[P]] -// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeak(i8** [[T0]]) +// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeak(i8** [[T0]]) // CHECK-NEXT: store i8* [[T1]], i8** [[Y]] // CHECK-NEXT: ret void @@ -83,7 +83,7 @@ void test5(__weak id *p) { // CHECK-NEXT: [[Y:%.*]] = alloca i8*, // CHECK-NEXT: store // CHECK-NEXT: [[T0:%.*]] = load i8**, i8*** [[P]] -// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T0]]) +// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T0]]) // CHECK-NEXT: store i8* [[T1]], i8** [[Y]] // CHECK-NEXT: ret void @@ -96,7 +96,7 @@ void test6(__weak Foo **p) { // CHECK-NEXT: store // CHECK-NEXT: [[T0:%.*]] = load [[FOO]]**, [[FOO]]*** [[P]] // CHECK-NEXT: [[T1:%.*]] = bitcast [[FOO]]** [[T0]] to i8** -// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T1]]) +// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T1]]) // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[FOO]]* // CHECK-NEXT: store [[FOO]]* [[T3]], [[FOO]]** [[Y]] // CHECK-NEXT: ret void @@ -114,32 +114,32 @@ void test7(void) { // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[FOO]]* // CHECK-NEXT: [[T2:%.*]] = bitcast [[FOO]]** [[P]] to i8** // CHECK-NEXT: [[T3:%.*]] = bitcast [[FOO]]* [[T1]] to i8* -// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) -// CHECK: call void @objc_copyWeak +// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]]) +// CHECK: call void @llvm.objc.copyWeak // CHECK: call void @use_block -// CHECK: call void @objc_destroyWeak +// CHECK: call void @llvm.objc.destroyWeak // CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block -// CHECK: @objc_copyWeak +// CHECK: @llvm.objc.copyWeak // CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block -// CHECK: @objc_destroyWeak +// CHECK: @llvm.objc.destroyWeak void test8(void) { __block __weak Foo *p = get_object(); use_block(^{ [p run ]; }); } // CHECK-LABEL: define void @_Z5test8v -// CHECK: call i8* @objc_initWeak -// CHECK-NOT: call void @objc_copyWeak +// CHECK: call i8* @llvm.objc.initWeak +// CHECK-NOT: call void @llvm.objc.copyWeak // CHECK: call void @use_block -// CHECK: call void @objc_destroyWeak +// CHECK: call void @llvm.objc.destroyWeak // CHECK-LABEL: define internal void @__Block_byref_object_copy -// CHECK: call void @objc_moveWeak +// CHECK: call void @llvm.objc.moveWeak // CHECK-LABEL: define internal void @__Block_byref_object_dispose -// CHECK: call void @objc_destroyWeak +// CHECK: call void @llvm.objc.destroyWeak // CHECK-LABEL: define void @_Z14test9_baselinev() // CHECK: define linkonce_odr hidden void @__copy_helper diff --git a/test/CodeGenObjCXX/objc-weak.mm b/test/CodeGenObjCXX/objc-weak.mm index 68c2d46111..afccc81106 100644 --- a/test/CodeGenObjCXX/objc-weak.mm +++ b/test/CodeGenObjCXX/objc-weak.mm @@ -18,9 +18,9 @@ id test0() { // CHECK: [[THIS:%this.*]] = load [[A]]*, [[A]]** [[THISADDR]] // CHECK: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]] // CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0 -// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeak(i8** [[T0]]) +// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeak(i8** [[T0]]) // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0 -// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]]) +// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]]) // Move Assignment Operator // CHECK-LABEL: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.A* @_ZN1AaSEOS_( @@ -29,9 +29,9 @@ id test0() { // CHECK: [[THIS:%this.*]] = load [[A]]*, [[A]]** [[THISADDR]] // CHECK: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]] // CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0 -// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeak(i8** [[T0]]) +// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeak(i8** [[T0]]) // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0 -// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]]) +// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]]) // Default Constructor // CHECK-LABEL: define linkonce_odr void @_ZN1AC2Ev( @@ -48,7 +48,7 @@ id test0() { // CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0 // CHECK-NEXT: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]] // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0 -// CHECK-NEXT: call void @objc_copyWeak(i8** [[T0]], i8** [[T1]]) +// CHECK-NEXT: call void @llvm.objc.copyWeak(i8** [[T0]], i8** [[T1]]) // Move Constructor // CHECK-LABEL: define linkonce_odr void @_ZN1AC2EOS_( @@ -58,12 +58,12 @@ id test0() { // CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0 // CHECK-NEXT: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]] // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0 -// CHECK-NEXT: call void @objc_moveWeak(i8** [[T0]], i8** [[T1]]) +// CHECK-NEXT: call void @llvm.objc.moveWeak(i8** [[T0]], i8** [[T1]]) // Destructor // CHECK-LABEL: define linkonce_odr void @_ZN1AD2Ev( // CHECK: [[THISADDR:%this.*]] = alloca [[A:.*]]* // CHECK: [[THIS:%this.*]] = load [[A]]*, [[A]]** [[THISADDR]] // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0 -// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) +// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]]) |