summaryrefslogtreecommitdiff
path: root/test/SemaObjCXX
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@apple.com>2017-09-20 06:55:43 +0000
committerAkira Hatanaka <ahatanaka@apple.com>2017-09-20 06:55:43 +0000
commit8385a295e2d9a3f7ea56000826056d669d562dab (patch)
tree78a02f418a344310304a4471436eede3fa971a07 /test/SemaObjCXX
parenta4e2a1bb79ad3a93151ebd059a0d2cf0f88ff4aa (diff)
Revert "Add support for attribute 'noescape'."
This reverts commit r313722. It looks like compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc cannot be compiled because some of the functions declared in the file do not match the ones in the SDK headers (which are annotated with 'noescape'). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313725 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaObjCXX')
-rw-r--r--test/SemaObjCXX/noescape.mm90
1 files changed, 0 insertions, 90 deletions
diff --git a/test/SemaObjCXX/noescape.mm b/test/SemaObjCXX/noescape.mm
deleted file mode 100644
index 6c5d9897aa..0000000000
--- a/test/SemaObjCXX/noescape.mm
+++ /dev/null
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -std=c++11 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -std=c++1z %s
-
-typedef void (^BlockTy)();
-
-struct S {
- int i;
- void m();
-};
-
-void noescapeFunc0(id, __attribute__((noescape)) BlockTy);
-void noescapeFunc1(id, [[clang::noescape]] BlockTy);
-void noescapeFunc2(__attribute__((noescape)) int *); // expected-note {{previous declaration is here}}
-void noescapeFunc3(__attribute__((noescape)) id);
-void noescapeFunc4(__attribute__((noescape)) int &);
-void noescapeFunc2(int *); // expected-error {{conflicting types for 'noescapeFunc2'}}
-
-void invalidFunc0(int __attribute__((noescape))); // expected-warning {{'noescape' attribute only applies to pointer arguments}}
-void invalidFunc1(int __attribute__((noescape(0)))); // expected-error {{'noescape' attribute takes no arguments}}
-void invalidFunc2(int0 *__attribute__((noescape))); // expected-error {{use of undeclared identifier 'int0'; did you mean 'int'?}}
-void invalidFunc3(__attribute__((noescape)) int (S::*Ty)); // expected-warning {{'noescape' attribute only applies to pointer arguments}}
-void invalidFunc4(__attribute__((noescape)) void (S::*Ty)()); // expected-warning {{'noescape' attribute only applies to pointer arguments}}
-int __attribute__((noescape)) g; // expected-warning {{'noescape' attribute only applies to parameters}}
-
-struct S1 {
- virtual void m0(int *__attribute__((noescape))); // expected-note {{parameter of overridden method is annotated with __attribute__((noescape))}}
-};
-
-struct S2 : S1 {
- void m0(int *__attribute__((noescape))) override;
-};
-
-struct S3 : S1 {
- void m0(int *) override; // expected-warning {{parameter of overriding method should be annotated with __attribute__((noescape))}}
-};
-
-__attribute__((objc_root_class))
-@interface C0
--(void) m0:(int*)__attribute__((noescape)) p; // expected-note {{parameter of overridden method is annotated with __attribute__((noescape))}}
-@end
-
-@implementation C0
--(void) m0:(int*)__attribute__((noescape)) p {}
-@end
-
-@interface C1 : C0
--(void) m0:(int*)__attribute__((noescape)) p;
-@end
-
-@implementation C1 : C0
--(void) m0:(int*)__attribute__((noescape)) p {}
-@end
-
-@interface C2 : C0
--(void) m0:(int*) p; // expected-warning {{parameter of overriding method should be annotated with __attribute__((noescape))}}
-@end
-
-@implementation C2 : C0
--(void) m0:(int*) p {}
-@end
-
-void func0(int *);
-void (*fnptr0)(int *);
-void (*fnptr1)(__attribute__((noescape)) int *);
-template<void (*fn)(int*)> struct S4 {};
-template<void (*fn)(int* __attribute__((noescape)))> struct S5 {};
-
-#if __cplusplus < 201406
- // expected-note@-4 {{template parameter is declared here}}
- // expected-note@-4 {{template parameter is declared here}}
-#endif
-
-void test0() {
- fnptr0 = &func0;
- fnptr0 = &noescapeFunc2;
- fnptr1 = &func0; // expected-error {{assigning to 'void (*)(__attribute__((noescape)) int *)' from incompatible type 'void (*)(int *)'}}
- fnptr1 = &noescapeFunc2;
- S4<&func0> e0;
- S4<&noescapeFunc2> e1;
- S5<&func0> ne0;
-
-#if __cplusplus < 201406
- // expected-error@-4 {{non-type template argument of type 'void (*)(__attribute__((noescape)) int *)' cannot be converted to a value of type 'void (*)(int *)'}}
- // expected-error@-4 {{non-type template argument of type 'void (*)(int *)' cannot be converted to a value of type 'void (*)(__attribute__((noescape)) int *)'}}
-#else
- // expected-error@-6 {{value of type 'void (*)(int *)' is not implicitly convertible to 'void (*)(__attribute__((noescape)) int *)'}}
-#endif
-
- S5<&noescapeFunc2> ne1;
-}