summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-03-05 08:46:24 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-03-05 08:46:24 +0000
commitafdc66f4fa8f74a8ce4811d7148d90a00d1d770f (patch)
treef7f1e19cef4bd1f80039bc89b9f706bac992e35d /clang/test
parentd3e7057afc3f6211b838e1b4d53a4ee9e799283f (diff)
downloadbcm5719-llvm-afdc66f4fa8f74a8ce4811d7148d90a00d1d770f.tar.gz
bcm5719-llvm-afdc66f4fa8f74a8ce4811d7148d90a00d1d770f.zip
[arcmt]
-Make sure we don't change to '__weak' a __block variable used as output. -Make sure we don't apply __weak twice. Fixes rdar://10520757&10521362 llvm-svn: 152020
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/ARCMT/rewrite-block-var.m20
-rw-r--r--clang/test/ARCMT/rewrite-block-var.m.result20
2 files changed, 40 insertions, 0 deletions
diff --git a/clang/test/ARCMT/rewrite-block-var.m b/clang/test/ARCMT/rewrite-block-var.m
index e6a8fb72e00..538f16c2557 100644
--- a/clang/test/ARCMT/rewrite-block-var.m
+++ b/clang/test/ARCMT/rewrite-block-var.m
@@ -23,3 +23,23 @@ void test2(Foo *p) {
x = [p something];
});
}
+
+void test3(Foo *p) {
+ __block Foo *x; // __block used as output variable.
+ bar(^{
+ [x something];
+ });
+ bar(^{
+ x = 0;
+ });
+}
+
+void test4(Foo *p) {
+ __block Foo *x = p; // __block used just to break cycle.
+ bar(^{
+ [x something];
+ });
+ bar(^{
+ [x something];
+ });
+}
diff --git a/clang/test/ARCMT/rewrite-block-var.m.result b/clang/test/ARCMT/rewrite-block-var.m.result
index 27c81bd5882..a9d0b0f7fad 100644
--- a/clang/test/ARCMT/rewrite-block-var.m.result
+++ b/clang/test/ARCMT/rewrite-block-var.m.result
@@ -23,3 +23,23 @@ void test2(Foo *p) {
x = [p something];
});
}
+
+void test3(Foo *p) {
+ __block Foo *x; // __block used as output variable.
+ bar(^{
+ [x something];
+ });
+ bar(^{
+ x = 0;
+ });
+}
+
+void test4(Foo *p) {
+ __weak Foo *x = p; // __block used just to break cycle.
+ bar(^{
+ [x something];
+ });
+ bar(^{
+ [x something];
+ });
+}
OpenPOWER on IntegriCloud