Author: arphaman Date: Thu Feb 23 18:09:30 2017 New Revision: 296048 URL: http://llvm.org/viewvc/llvm-project?rev=296048&view=rev Log: NFC, Add a test that ensures that we don't emit helper code in copy/dispose routines for objects that are captured with the __unsafe_unretained ownership qualifier
This is a preparation commit that improves code-coverage in code that emits block copy/dispose routines. Modified: cfe/trunk/test/CodeGenObjC/arc-blocks.m Modified: cfe/trunk/test/CodeGenObjC/arc-blocks.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-blocks.m?rev=296048&r1=296047&r2=296048&view=diff ============================================================================== --- cfe/trunk/test/CodeGenObjC/arc-blocks.m (original) +++ cfe/trunk/test/CodeGenObjC/arc-blocks.m Thu Feb 23 18:09:30 2017 @@ -667,6 +667,41 @@ void test18(id x) { // CHECK-UNOPT-NEXT: ret void } +// Ensure that we don't emit helper code in copy/dispose routines for variables +// that are const-captured. +void testUnsafeUnretainedLifetimeInCopyAndDestroyHelpers(id x, id y) { + id __unsafe_unretained unsafeObject = x; + (^ { testUnsafeUnretainedLifetimeInCopyAndDestroyHelpers(x, unsafeObject); })(); +} + +// CHECK-LABEL: testUnsafeUnretainedLifetimeInCopyAndDestroyHelpers_block_invoke +// CHECK-UNOPT-LABEL: testUnsafeUnretainedLifetimeInCopyAndDestroyHelpers_block_invoke + +// CHECK-UNOPT: @__copy_helper_block +// CHECK-UNOPT: alloca +// CHECK-UNOPT-NEXT: alloca +// CHECK-UNOPT-NEXT: store +// CHECK-UNOPT-NEXT: store +// CHECK-UNOPT-NEXT: load +// CHECK-UNOPT-NEXT: bitcast +// CHECK-UNOPT-NEXT: load +// CHECK-UNOPT-NEXT: bitcast +// CHECK-UNOPT-NEXT: getelementptr +// CHECK-UNOPT-NEXT: getelementptr +// CHECK-UNOPT-NEXT: load +// CHECK-UNOPT-NEXT: store +// CHECK-UNOPT-NEXT: call void @objc_storeStrong +// CHECK-UNOPT-NEXT: ret + +// CHECK-UNOPT: @__destroy_helper_block +// CHECK-UNOPT: alloca +// CHECK-UNOPT-NEXT: store +// CHECK-UNOPT-NEXT: load +// CHECK-UNOPT-NEXT: bitcast +// CHECK-UNOPT-NEXT: getelementptr +// CHECK-UNOPT-NEXT: call void @objc_storeStrong +// CHECK-UNOPT-NEXT: ret + // rdar://13588325 void test19_sink(void (^)(int)); void test19(void (^b)(void)) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits