diff options
author | Michael Gottesman <mgottesman@apple.com> | 2013-02-02 00:57:44 +0000 |
---|---|---|
committer | Michael Gottesman <mgottesman@apple.com> | 2013-02-02 00:57:44 +0000 |
commit | cf50e6d6ce645381b794b8fab5d85dd9568ff201 (patch) | |
tree | 1469dc19075f6d45c4aa9fac9016fc690356e0e3 /clang/test | |
parent | 93482a523c4480291679254dd09b05d6da98b20c (diff) | |
download | bcm5719-llvm-cf50e6d6ce645381b794b8fab5d85dd9568ff201.tar.gz bcm5719-llvm-cf50e6d6ce645381b794b8fab5d85dd9568ff201.zip |
On platforms which do not support ARC natively, do not mark objc_retain/objc_release as "nonlazybind".
rdar://13108298.
rdar://13129783.
llvm-svn: 174253
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGenObjC/arc.m | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/clang/test/CodeGenObjC/arc.m b/clang/test/CodeGenObjC/arc.m index bac966165a6..ca100e47624 100644 --- a/clang/test/CodeGenObjC/arc.m +++ b/clang/test/CodeGenObjC/arc.m @@ -1,6 +1,37 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -O2 -disable-llvm-optzns -o - %s | FileCheck %s // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=CHECK-GLOBALS %s +// rdar://13129783. Check both native/non-native arc platforms. Here we check +// that they treat nonlazybind differently. +// RUN: %clang_cc1 -fobjc-runtime=macosx-10.6.0 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=ARC-ALIEN %s +// RUN: %clang_cc1 -fobjc-runtime=macosx-10.7.0 -triple x86_64-apple-darwin11 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=ARC-NATIVE %s + +// ARC-ALIEN: declare extern_weak i8* @objc_retain(i8*) +// ARC-ALIEN: declare extern_weak void @objc_storeStrong(i8**, i8*) +// ARC-ALIEN: declare extern_weak i8* @objc_autoreleaseReturnValue(i8*) +// ARC-ALIEN: declare i8* @objc_msgSend(i8*, i8*, ...) nonlazybind +// ARC-ALIEN: declare extern_weak void @objc_release(i8*) +// ARC-ALIEN: declare extern_weak i8* @objc_retainAutoreleasedReturnValue(i8*) +// ARC-ALIEN: declare extern_weak i8* @objc_initWeak(i8**, i8*) +// ARC-ALIEN: declare extern_weak i8* @objc_storeWeak(i8**, i8*) +// ARC-ALIEN: declare extern_weak i8* @objc_loadWeakRetained(i8**) +// ARC-ALIEN: declare extern_weak void @objc_destroyWeak(i8**) +// ARC-ALIEN: declare extern_weak i8* @objc_autorelease(i8*) +// ARC-ALIEN: declare extern_weak i8* @objc_retainAutorelease(i8*) + +// ARC-NATIVE: declare i8* @objc_retain(i8*) nonlazybind +// ARC-NATIVE: declare void @objc_storeStrong(i8**, i8*) +// ARC-NATIVE: declare i8* @objc_autoreleaseReturnValue(i8*) +// ARC-NATIVE: declare i8* @objc_msgSend(i8*, i8*, ...) nonlazybind +// ARC-NATIVE: declare void @objc_release(i8*) nonlazybind +// ARC-NATIVE: declare i8* @objc_retainAutoreleasedReturnValue(i8*) +// ARC-NATIVE: declare i8* @objc_initWeak(i8**, i8*) +// ARC-NATIVE: declare i8* @objc_storeWeak(i8**, i8*) +// ARC-NATIVE: declare i8* @objc_loadWeakRetained(i8**) +// ARC-NATIVE: declare void @objc_destroyWeak(i8**) +// ARC-NATIVE: declare i8* @objc_autorelease(i8*) +// ARC-NATIVE: declare i8* @objc_retainAutorelease(i8*) + // CHECK: define void @test0 void test0(id x) { // CHECK: [[X:%.*]] = alloca i8* @@ -9,9 +40,6 @@ void test0(id x) { // CHECK-NEXT: [[TMP:%.*]] = load i8** [[X]] // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) // CHECK-NEXT: ret void -// rdar://12040837 - // CHECK: declare extern_weak i8* @objc_retain(i8*) nonlazybind - // CHECK: declare extern_weak void @objc_release(i8*) nonlazybind } // CHECK: define i8* @test1(i8* |