diff options
Diffstat (limited to 'test/Misc')
36 files changed, 72 insertions, 2866 deletions
diff --git a/test/Misc/Inputs/module.modulemap b/test/Misc/Inputs/module.modulemap deleted file mode 100644 index a8ecb09390a2..000000000000 --- a/test/Misc/Inputs/module.modulemap +++ /dev/null @@ -1 +0,0 @@ -module X {} diff --git a/test/Misc/ast-dump-arm-attr.c b/test/Misc/ast-dump-arm-attr.c deleted file mode 100644 index 41328165d210..000000000000 --- a/test/Misc/ast-dump-arm-attr.c +++ /dev/null @@ -1,5 +0,0 @@ -// RUN: %clang_cc1 -triple arm-apple-darwin -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s - -__attribute__((interrupt)) void Test(void); -// CHECK: FunctionDecl{{.*}}Test -// CHECK-NEXT: ARMInterruptAttr diff --git a/test/Misc/ast-dump-attr.cpp b/test/Misc/ast-dump-attr.cpp deleted file mode 100644 index 1e4eb7c31955..000000000000 --- a/test/Misc/ast-dump-attr.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++11 -Wno-deprecated-declarations -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s
-
-int TestLocation
-__attribute__((unused));
-// CHECK: VarDecl{{.*}}TestLocation
-// CHECK-NEXT: UnusedAttr 0x{{[^ ]*}} <line:[[@LINE-2]]:16>
-
-int TestIndent
-__attribute__((unused));
-// CHECK: {{^}}VarDecl{{.*TestIndent[^()]*$}}
-// CHECK-NEXT: {{^}}`-UnusedAttr{{[^()]*$}}
-
-void TestAttributedStmt() {
- switch (1) {
- case 1:
- [[clang::fallthrough]];
- case 2:
- ;
- }
-}
-// CHECK: FunctionDecl{{.*}}TestAttributedStmt
-// CHECK: AttributedStmt
-// CHECK-NEXT: FallThroughAttr
-// CHECK-NEXT: NullStmt
-
-[[clang::warn_unused_result]] int TestCXX11DeclAttr();
-// CHECK: FunctionDecl{{.*}}TestCXX11DeclAttr
-// CHECK-NEXT: WarnUnusedResultAttr
-
-int TestAlignedNull __attribute__((aligned));
-// CHECK: VarDecl{{.*}}TestAlignedNull
-// CHECK-NEXT: AlignedAttr {{.*}} aligned
-// CHECK-NEXT: <<<NULL>>>
-
-int TestAlignedExpr __attribute__((aligned(4)));
-// CHECK: VarDecl{{.*}}TestAlignedExpr
-// CHECK-NEXT: AlignedAttr {{.*}} aligned
-// CHECK-NEXT: IntegerLiteral
-
-int TestEnum __attribute__((visibility("default")));
-// CHECK: VarDecl{{.*}}TestEnum
-// CHECK-NEXT: VisibilityAttr{{.*}} Default
-
-class __attribute__((lockable)) Mutex {
-} mu1, mu2;
-int TestExpr __attribute__((guarded_by(mu1)));
-// CHECK: VarDecl{{.*}}TestExpr
-// CHECK-NEXT: GuardedByAttr
-// CHECK-NEXT: DeclRefExpr{{.*}}mu1
-
-class Mutex TestVariadicExpr __attribute__((acquired_after(mu1, mu2)));
-// CHECK: VarDecl{{.*}}TestVariadicExpr
-// CHECK: AcquiredAfterAttr
-// CHECK-NEXT: DeclRefExpr{{.*}}mu1
-// CHECK-NEXT: DeclRefExpr{{.*}}mu2
-
-void function1(void *) {
- int TestFunction __attribute__((cleanup(function1)));
-}
-// CHECK: VarDecl{{.*}}TestFunction
-// CHECK-NEXT: CleanupAttr{{.*}} Function{{.*}}function1
-
-void TestIdentifier(void *, int)
-__attribute__((pointer_with_type_tag(ident1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestIdentifier
-// CHECK: ArgumentWithTypeTagAttr{{.*}} pointer_with_type_tag ident1
-
-void TestBool(void *, int)
-__attribute__((pointer_with_type_tag(bool1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestBool
-// CHECK: ArgumentWithTypeTagAttr{{.*}}pointer_with_type_tag bool1 1 2 IsPointer
-
-void TestUnsigned(void *, int)
-__attribute__((pointer_with_type_tag(unsigned1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestUnsigned
-// CHECK: ArgumentWithTypeTagAttr{{.*}} pointer_with_type_tag unsigned1 1 2
-
-void TestInt(void) __attribute__((constructor(123)));
-// CHECK: FunctionDecl{{.*}}TestInt
-// CHECK-NEXT: ConstructorAttr{{.*}} 123
-
-static int TestString __attribute__((alias("alias1")));
-// CHECK: VarDecl{{.*}}TestString
-// CHECK-NEXT: AliasAttr{{.*}} "alias1"
-
-extern struct s1 TestType
-__attribute__((type_tag_for_datatype(ident1,int)));
-// CHECK: VarDecl{{.*}}TestType
-// CHECK-NEXT: TypeTagForDatatypeAttr{{.*}} int
-
-void TestLabel() {
-L: __attribute__((unused)) int i;
-// CHECK: LabelStmt{{.*}}'L'
-// CHECK: VarDecl{{.*}}i 'int'
-// CHECK-NEXT: UnusedAttr{{.*}}
-
-M: __attribute(()) int j;
-// CHECK: LabelStmt {{.*}} 'M'
-// CHECK-NEXT: DeclStmt
-// CHECK-NEXT: VarDecl {{.*}} j 'int'
-
-N: __attribute(()) ;
-// CHECK: LabelStmt {{.*}} 'N'
-// CHECK-NEXT: NullStmt
-}
-
-namespace Test {
-extern "C" int printf(const char *format, ...);
-// CHECK: FunctionDecl{{.*}}printf
-// CHECK-NEXT: ParmVarDecl{{.*}}format{{.*}}'const char *'
-// CHECK-NEXT: FormatAttr{{.*}}Implicit printf 1 2
-
-alignas(8) extern int x;
-extern int x;
-// CHECK: VarDecl{{.*}} x 'int'
-// CHECK: VarDecl{{.*}} x 'int'
-// CHECK-NEXT: AlignedAttr{{.*}} Inherited
-}
-
-int __attribute__((cdecl)) TestOne(void), TestTwo(void);
-// CHECK: FunctionDecl{{.*}}TestOne{{.*}}__attribute__((cdecl))
-// CHECK: FunctionDecl{{.*}}TestTwo{{.*}}__attribute__((cdecl))
-
-void func() {
- auto Test = []() __attribute__((no_thread_safety_analysis)) {};
- // CHECK: CXXMethodDecl{{.*}}operator() 'void () const'
- // CHECK: NoThreadSafetyAnalysisAttr
-
- // Because GNU's noreturn applies to the function type, and this lambda does
- // not have a capture list, the call operator and the function pointer
- // conversion should both be noreturn, but the method should not contain a
- // NoReturnAttr because the attribute applied to the type.
- auto Test2 = []() __attribute__((noreturn)) { while(1); };
- // CHECK: CXXMethodDecl{{.*}}operator() 'void () __attribute__((noreturn)) const'
- // CHECK-NOT: NoReturnAttr
- // CHECK: CXXConversionDecl{{.*}}operator void (*)() __attribute__((noreturn))
-}
-
-namespace PR20930 {
-struct S {
- struct { int Test __attribute__((deprecated)); };
- // CHECK: FieldDecl{{.*}}Test 'int'
- // CHECK-NEXT: DeprecatedAttr
-};
-
-void f() {
- S s;
- s.Test = 1;
- // CHECK: IndirectFieldDecl{{.*}}Test 'int'
- // CHECK: DeprecatedAttr
-}
-}
-
-struct __attribute__((objc_bridge_related(NSParagraphStyle,,))) TestBridgedRef;
-// CHECK: CXXRecordDecl{{.*}} struct TestBridgedRef
-// CHECK-NEXT: ObjCBridgeRelatedAttr{{.*}} NSParagraphStyle
-
-void TestExternalSourceSymbolAttr1()
-__attribute__((external_source_symbol(language="Swift", defined_in="module", generated_declaration)));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr1
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration
-
-void TestExternalSourceSymbolAttr2()
-__attribute__((external_source_symbol(defined_in="module", language="Swift")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr2
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Swift" "module"{{$}}
-
-void TestExternalSourceSymbolAttr3()
-__attribute__((external_source_symbol(generated_declaration, language="Objective-C++", defined_in="module")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr3
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Objective-C++" "module" GeneratedDeclaration
-
-void TestExternalSourceSymbolAttr4()
-__attribute__((external_source_symbol(defined_in="Some external file.cs", generated_declaration, language="C Sharp")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr4
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "C Sharp" "Some external file.cs" GeneratedDeclaration
-
-void TestExternalSourceSymbolAttr5()
-__attribute__((external_source_symbol(generated_declaration, defined_in="module", language="Swift")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr5
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration
-
-namespace TestNoEscape {
- void noescapeFunc(int *p0, __attribute__((noescape)) int *p1) {}
- // CHECK: `-FunctionDecl{{.*}} noescapeFunc 'void (int *, __attribute__((noescape)) int *)'
- // CHECK-NEXT: ParmVarDecl
- // CHECK-NEXT: ParmVarDecl
- // CHECK-NEXT: NoEscapeAttr
-}
-
-namespace TestSuppress {
- [[gsl::suppress("at-namespace")]];
- // CHECK: NamespaceDecl{{.*}} TestSuppress
- // CHECK-NEXT: EmptyDecl{{.*}}
- // CHECK-NEXT: SuppressAttr{{.*}} at-namespace
- [[gsl::suppress("on-decl")]]
- void TestSuppressFunction();
- // CHECK: FunctionDecl{{.*}} TestSuppressFunction
- // CHECK-NEXT SuppressAttr{{.*}} on-decl
-
- void f() {
- int *i;
-
- [[gsl::suppress("on-stmt")]] {
- // CHECK: AttributedStmt
- // CHECK-NEXT: SuppressAttr{{.*}} on-stmt
- // CHECK-NEXT: CompoundStmt
- i = reinterpret_cast<int*>(7);
- }
- }
-}
diff --git a/test/Misc/ast-dump-attr.m b/test/Misc/ast-dump-attr.m deleted file mode 100644 index 8775d40d9985..000000000000 --- a/test/Misc/ast-dump-attr.m +++ /dev/null @@ -1,57 +0,0 @@ -// RUN: %clang_cc1 -fdouble-square-bracket-attributes -triple x86_64-apple-macosx10.10.0 -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s
-
-@interface NSObject
-@end
-
-[[clang::objc_exception]]
-@interface Test1 {
-// CHECK: ObjCInterfaceDecl{{.*}} Test1
-// CHECK-NEXT: ObjCExceptionAttr{{.*}}
- [[clang::iboutlet]] NSObject *Test2;
-// CHECK: ObjCIvarDecl{{.*}} Test2
-// CHECK-NEXT: IBOutletAttr
-}
-@property (readonly) [[clang::objc_returns_inner_pointer]] void *Test3, *Test4;
-// CHECK: ObjCPropertyDecl{{.*}} Test3 'void *' readonly
-// CHECK-NEXT: ObjCReturnsInnerPointerAttr
-// CHECK-NEXT: ObjCPropertyDecl{{.*}} Test4 'void *' readonly
-// CHECK-NEXT: ObjCReturnsInnerPointerAttr
-
-@property (readonly) [[clang::iboutlet]] NSObject *Test5;
-// CHECK: ObjCPropertyDecl{{.*}} Test5 'NSObject *' readonly
-// CHECK-NEXT: IBOutletAttr
-
-// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test3
-// CHECK-NEXT: ObjCReturnsInnerPointerAttr
-// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test4
-// CHECK-NEXT: ObjCReturnsInnerPointerAttr
-// CHECK: ObjCMethodDecl{{.*}} implicit{{.*}} Test5
-// CHECK-NOT: IBOutletAttr
-@end
-
-[[clang::objc_runtime_name("name")]] @protocol Test6;
-// CHECK: ObjCProtocolDecl{{.*}} Test6
-// CHECK-NEXT: ObjCRuntimeNameAttr{{.*}} "name"
-
-[[clang::objc_protocol_requires_explicit_implementation]]
-@protocol Test7
-// CHECK: ObjCProtocolDecl{{.*}} Test7
-// CHECK-NEXT: ObjCExplicitProtocolImplAttr
-@end
-
-@interface Test8
-// CHECK: ObjCInterfaceDecl{{.*}} Test8
--(void)Test9 [[clang::ns_consumes_self]];
-// CHECK: ObjCMethodDecl{{.*}} Test9 'void'
-// CHECK-NEXT: NSConsumesSelfAttr
--(void) [[clang::ns_consumes_self]] Test10: (int)Test11;
-// CHECK: ObjCMethodDecl{{.*}} Test10: 'void'
-// CHECK-NEXT: |-ParmVarDecl{{.*}} Test11 'int'
-// CHECK-NEXT: `-NSConsumesSelfAttr
--(void)Test12: (int *) [[clang::noescape]] Test13 to:(int)Test14 [[clang::ns_consumes_self]];
-// CHECK: ObjCMethodDecl{{.*}} Test12:to: 'void'
-// CHECK-NEXT: |-ParmVarDecl{{.*}} Test13 'int *'
-// CHECK-NEXT: | `-NoEscapeAttr
-// CHECK-NEXT: |-ParmVarDecl{{.*}} Test14 'int'
-// CHECK-NEXT: `-NSConsumesSelfAttr
-@end
diff --git a/test/Misc/ast-dump-c-attr.c b/test/Misc/ast-dump-c-attr.c deleted file mode 100644 index df9c347bb412..000000000000 --- a/test/Misc/ast-dump-c-attr.c +++ /dev/null @@ -1,46 +0,0 @@ -// RUN: %clang_cc1 -triple x86_64-pc-linux -fdouble-square-bracket-attributes -Wno-deprecated-declarations -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s - -int Test1 [[deprecated]]; -// CHECK: VarDecl{{.*}}Test1 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:13> "" "" - -enum [[deprecated("Frobble")]] Test2 { - Test3 [[deprecated]] -}; -// CHECK: EnumDecl{{.*}}Test2 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:8, col:28> "Frobble" "" -// CHECK-NEXT: EnumConstantDecl{{.*}}Test3 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:11> "" "" - -struct [[deprecated]] Test4 { - [[deprecated("Frobble")]] int Test5, Test6; - int Test7 [[deprecated]] : 12; -}; -// CHECK: RecordDecl{{.*}}Test4 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:10> "" "" -// CHECK-NEXT: FieldDecl{{.*}}Test5 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" "" -// CHECK-NEXT: FieldDecl{{.*}}Test6 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" "" -// CHECK-NEXT: FieldDecl{{.*}}Test7 -// CHECK-NEXT: IntegerLiteral{{.*}}'int' 12 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:15> "" "" - -struct [[deprecated]] Test8; -// CHECK: RecordDecl{{.*}}Test8 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:10> "" "" - -[[deprecated]] void Test9(int Test10 [[deprecated]]); -// CHECK: FunctionDecl{{.*}}Test9 -// CHECK-NEXT: ParmVarDecl{{.*}}Test10 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:40> "" "" -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:3> "" "" - -void Test11 [[deprecated]](void); -// CHECK: FunctionDecl{{.*}}Test11 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:15> "" "" - -void Test12(void) [[deprecated]] {} -// CHECK: FunctionDecl{{.*}}Test12 -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:21> "" "" diff --git a/test/Misc/ast-dump-color.cpp b/test/Misc/ast-dump-color.cpp deleted file mode 100644 index ad7ea3023a86..000000000000 --- a/test/Misc/ast-dump-color.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// RUN: not %clang_cc1 -triple x86_64-pc-linux -std=c++11 -ast-dump -fcolor-diagnostics %s | FileCheck --strict-whitespace %s -// REQUIRES: ansi-escape-sequences - -/// <a>Hello</a> -/// <br/> -int Test __attribute__((unused)); - -/// Comment -void TestAttributedStmt() { - switch (1) { - case 1: - [[clang::fallthrough]]; - case 2: - ; - } -} - -class __attribute__((lockable)) Mutex { - /// A variable - int var1; - /// Another variable - /// - /// Like the other variable, but different - int var2; -} mu1, mu2; -int TestExpr __attribute__((guarded_by(mu1))); - -struct Invalid { - __attribute__((noinline)) Invalid(error); -} Invalid; - -//CHECK: {{^}}[[GREEN:.\[0;1;32m]]TranslationUnitDecl[[RESET:.\[0m]][[Yellow:.\[0;33m]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]> [[Yellow]]<invalid sloc>[[RESET]]{{$}} -//CHECK: {{^}}[[Blue:.\[0;34m]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]> [[Yellow]]<invalid sloc>[[RESET]] implicit[[CYAN:.\[0;1;36m]] __int128_t[[RESET]] [[Green:.\[0;32m]]'__int128'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]> [[Yellow]]<invalid sloc>[[RESET]] implicit[[CYAN]] __uint128_t[[RESET]] [[Green]]'unsigned __int128'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]> [[Yellow]]<invalid sloc>[[RESET]] implicit[[CYAN]] __builtin_va_list[[RESET]] [[Green]]'__va_list_tag [1]'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]{{.*}}ast-dump-color.cpp:6:1[[RESET]], [[Yellow]]col:5[[RESET]]> [[Yellow]]col:5[[RESET]][[CYAN]] Test[[RESET]] [[Green]]'int'[[RESET]] -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE:.\[0;1;34m]]UnusedAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:25[[RESET]]> unused{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]]> Text=" "{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:7[[RESET]]> Name="a"{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]], [[Yellow]]col:12[[RESET]]> Text="Hello"{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]HTMLEndTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:13[[RESET]], [[Yellow]]col:16[[RESET]]> Name="a"{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:5:4[[RESET]]> Text=" "{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:8[[RESET]]> Name="br" SelfClosing{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]FunctionDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:9:1[[RESET]], [[Yellow]]line:16:1[[RESET]]> [[Yellow]]line:9:6[[RESET]][[CYAN]] TestAttributedStmt[[RESET]] [[Green]]'void ()'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[MAGENTA:.\[0;1;35m]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:27[[RESET]], [[Yellow]]line:16:1[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]SwitchStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:10:3[[RESET]], [[Yellow]]line:15:3[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[Blue:.\[0;34m]]<<<NULL>>>[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[MAGENTA]]IntegerLiteral[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:10:11[[RESET]]> [[Green]]'int'[[RESET]][[Cyan:.\[0;36m]][[RESET]][[Cyan]][[RESET]][[CYAN]] 1[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:14[[RESET]], [[Yellow]]line:15:3[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[MAGENTA]]CaseStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:11:3[[RESET]], [[Yellow]]line:12:27[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | | |-[[RESET]][[MAGENTA]]IntegerLiteral[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:11:8[[RESET]]> [[Green]]'int'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]][[CYAN]] 1[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | | |-[[RESET]][[Blue]]<<<NULL>>>[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | | `-[[RESET]][[MAGENTA]]AttributedStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:12:5[[RESET]], [[Yellow]]col:27[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | | |-[[RESET]][[BLUE]]FallThroughAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:7[[RESET]], [[Yellow]]col:14[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | | `-[[RESET]][[MAGENTA]]NullStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:27[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]CaseStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:13:3[[RESET]], [[Yellow]]line:14:5[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[MAGENTA]]IntegerLiteral[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:13:8[[RESET]]> [[Green]]'int'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]][[CYAN]] 2[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[Blue]]<<<NULL>>>[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]NullStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:14:5[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:8:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]> Text=" Comment"{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:1[[RESET]], [[Yellow]]line:25:1[[RESET]]> [[Yellow]]line:18:33[[RESET]] class[[CYAN]] Mutex[[RESET]] definition{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE]]CapabilityAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:22[[RESET]]> capability "mutex"{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:1[[RESET]], [[Yellow]]col:33[[RESET]]> [[Yellow]]col:33[[RESET]] implicit class[[CYAN]] Mutex[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]FieldDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:20:3[[RESET]], [[Yellow]]col:7[[RESET]]> [[Yellow]]col:7[[RESET]][[CYAN]] var1[[RESET]] [[Green]]'int'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:19:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]> Text=" A variable"{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]FieldDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:24:3[[RESET]], [[Yellow]]col:7[[RESET]]> [[Yellow]]col:7[[RESET]][[CYAN]] var2[[RESET]] [[Green]]'int'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]line:23:44[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]col:22[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | | `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:22[[RESET]]> Text=" Another variable"{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:23:6[[RESET]], [[Yellow]]col:44[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:44[[RESET]]> Text=" Like the other variable, but different"{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:33[[RESET]]> [[Yellow]]col:33[[RESET]] implicit used[[CYAN]] Mutex[[RESET]] [[Green]]'void () noexcept'[[RESET]] inline{{.*$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]> [[Yellow]]col:33[[RESET]] implicit constexpr[[CYAN]] Mutex[[RESET]] [[Green]]'void (const Mutex &)'[[RESET]] inline{{ .*$}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[GREEN]]ParmVarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]> [[Yellow]]col:33[[RESET]] [[Green]]'const Mutex &'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]> [[Yellow]]col:33[[RESET]] implicit constexpr[[CYAN]] Mutex[[RESET]] [[Green]]'void (Mutex &&)'[[RESET]] inline{{ .*$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[GREEN]]ParmVarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]> [[Yellow]]col:33[[RESET]] [[Green]]'Mutex &&'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:1[[RESET]], [[Yellow]]line:25:3[[RESET]]> [[Yellow]]col:3[[RESET]] referenced[[CYAN]] mu1[[RESET]] [[Green]]'class Mutex':'Mutex'[[RESET]] -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[MAGENTA]]CXXConstructExpr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:3[[RESET]]> [[Green]]'class Mutex':'Mutex'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]] [[Green]]'void () noexcept'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:1[[RESET]], [[Yellow]]line:25:8[[RESET]]> [[Yellow]]col:8[[RESET]][[CYAN]] mu2[[RESET]] [[Green]]'class Mutex':'Mutex'[[RESET]] -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[MAGENTA]]CXXConstructExpr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]]> [[Green]]'class Mutex':'Mutex'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]] [[Green]]'void () noexcept'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:26:1[[RESET]], [[Yellow]]col:5[[RESET]]> [[Yellow]]col:5[[RESET]][[CYAN]] TestExpr[[RESET]] [[Green]]'int'[[RESET]] -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[BLUE]]GuardedByAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:29[[RESET]], [[Yellow]]col:43[[RESET]]>{{$}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[MAGENTA]]DeclRefExpr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:40[[RESET]]> [[Green]]'class Mutex':'Mutex'[[RESET]][[Cyan]] lvalue[[RESET]][[Cyan]][[RESET]] [[GREEN]]Var[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]][[CYAN]] 'mu1'[[RESET]] [[Green]]'class Mutex':'Mutex'[[RESET]]{{$}} -//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:28:1[[RESET]], [[Yellow]]line:30:1[[RESET]]> [[Yellow]]line:28:8[[RESET]] struct[[CYAN]] Invalid[[RESET]] definition -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:1[[RESET]], [[Yellow]]col:8[[RESET]]> [[Yellow]]col:8[[RESET]] implicit referenced struct[[CYAN]] Invalid[[RESET]] -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:29:3[[RESET]], [[Yellow]]col:42[[RESET]]> [[Yellow]]col:29[[RESET]] invalid[[CYAN]] Invalid[[RESET]] [[Green]]'void (int)'[[RESET]] -//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[GREEN]]ParmVarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:37[[RESET]], [[Yellow]]<invalid sloc>[[RESET]]> [[Yellow]]col:42[[RESET]] invalid [[Green]]'int'[[RESET]] -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[BLUE]]NoInlineAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:18[[RESET]]> -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:28:8[[RESET]]> [[Yellow]]col:8[[RESET]] implicit used constexpr[[CYAN]] Invalid[[RESET]] [[Green]]'void () noexcept'[[RESET]] inline -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]]> -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]]> [[Yellow]]col:8[[RESET]] implicit constexpr[[CYAN]] Invalid[[RESET]] [[Green]]'void (const Invalid &)'[[RESET]] inline default trivial noexcept-unevaluated 0x{{[0-9a-fA-F]*}} -//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[GREEN]]ParmVarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]]> [[Yellow]]col:8[[RESET]] [[Green]]'const Invalid &'[[RESET]] -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]]> [[Yellow]]col:8[[RESET]] implicit constexpr[[CYAN]] Invalid[[RESET]] [[Green]]'void (Invalid &&)'[[RESET]] inline default trivial noexcept-unevaluated 0x{{[0-9a-fA-F]*}} -//CHECK: {{^}}[[Blue]]| `-[[RESET]][[GREEN]]ParmVarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]]> [[Yellow]]col:8[[RESET]] [[Green]]'Invalid &&'[[RESET]] -//CHECK: {{^}}[[Blue]]`-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:1[[RESET]], [[Yellow]]line:30:3[[RESET]]> [[Yellow]]col:3[[RESET]][[CYAN]] Invalid[[RESET]] [[Green]]'struct Invalid':'Invalid'[[RESET]] -//CHECK: {{^}}[[Blue]] `-[[RESET]][[MAGENTA]]CXXConstructExpr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:3[[RESET]]> [[Green]]'struct Invalid':'Invalid'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]] [[Green]]'void () noexcept'[[RESET]] diff --git a/test/Misc/ast-dump-comment.cpp b/test/Misc/ast-dump-comment.cpp deleted file mode 100644 index 5bd6934d80cf..000000000000 --- a/test/Misc/ast-dump-comment.cpp +++ /dev/null @@ -1,77 +0,0 @@ -// RUN: %clang_cc1 -Wdocumentation -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s - -/// Aaa -int TestLocation; -// CHECK: VarDecl{{.*}}TestLocation -// CHECK-NEXT: FullComment 0x{{[^ ]*}} <line:[[@LINE-3]]:4, col:7> - -/// -int TestIndent; -// CHECK: {{^VarDecl.*TestIndent[^()]*$}} -// CHECK-NEXT: {{^`-FullComment.*>$}} - -/// Aaa -int Test_TextComment; -// CHECK: VarDecl{{.*}}Test_TextComment -// CHECK-NEXT: FullComment -// CHECK-NEXT: ParagraphComment -// CHECK-NEXT: TextComment{{.*}} Text=" Aaa" - -/// \brief Aaa -int Test_BlockCommandComment; -// CHECK: VarDecl{{.*}}Test_BlockCommandComment -// CHECK: BlockCommandComment{{.*}} Name="brief" -// CHECK-NEXT: ParagraphComment -// CHECK-NEXT: TextComment{{.*}} Text=" Aaa" - -/// \param Aaa xxx -/// \param [in,out] Bbb yyy -void Test_ParamCommandComment(int Aaa, int Bbb); -// CHECK: FunctionDecl{{.*}}Test_ParamCommandComment -// CHECK: ParamCommandComment{{.*}} [in] implicitly Param="Aaa" ParamIndex=0 -// CHECK-NEXT: ParagraphComment -// CHECK-NEXT: TextComment{{.*}} Text=" xxx" -// CHECK: ParamCommandComment{{.*}} [in,out] explicitly Param="Bbb" ParamIndex=1 -// CHECK-NEXT: ParagraphComment -// CHECK-NEXT: TextComment{{.*}} Text=" yyy" - -/// \tparam Aaa xxx -template <typename Aaa> class Test_TParamCommandComment; -// CHECK: ClassTemplateDecl{{.*}}Test_TParamCommandComment -// CHECK: TParamCommandComment{{.*}} Param="Aaa" Position=<0> -// CHECK-NEXT: ParagraphComment -// CHECK-NEXT: TextComment{{.*}} Text=" xxx" - -/// \c Aaa -int Test_InlineCommandComment; -// CHECK: VarDecl{{.*}}Test_InlineCommandComment -// CHECK: InlineCommandComment{{.*}} Name="c" RenderMonospaced Arg[0]="Aaa" - -/// <a>Aaa</a> -/// <br/> -int Test_HTMLTagComment; -// CHECK: VarDecl{{.*}}Test_HTMLTagComment -// CHECK-NEXT: FullComment -// CHECK-NEXT: ParagraphComment -// CHECK-NEXT: TextComment{{.*}} Text=" " -// CHECK-NEXT: HTMLStartTagComment{{.*}} Name="a" -// CHECK-NEXT: TextComment{{.*}} Text="Aaa" -// CHECK-NEXT: HTMLEndTagComment{{.*}} Name="a" -// CHECK-NEXT: TextComment{{.*}} Text=" " -// CHECK-NEXT: HTMLStartTagComment{{.*}} Name="br" SelfClosing - -/// \verbatim -/// Aaa -/// \endverbatim -int Test_VerbatimBlockComment; -// CHECK: VarDecl{{.*}}Test_VerbatimBlockComment -// CHECK: VerbatimBlockComment{{.*}} Name="verbatim" CloseName="endverbatim" -// CHECK-NEXT: VerbatimBlockLineComment{{.*}} Text=" Aaa" - -/// \param ... More arguments -template<typename T> -void Test_TemplatedFunctionVariadic(int arg, ...); -// CHECK: FunctionTemplateDecl{{.*}}Test_TemplatedFunctionVariadic -// CHECK: ParamCommandComment{{.*}} [in] implicitly Param="..." -// CHECK-NEXT: ParagraphComment -// CHECK-NEXT: TextComment{{.*}} Text=" More arguments" diff --git a/test/Misc/ast-dump-decl.c b/test/Misc/ast-dump-decl.c deleted file mode 100644 index 71b98c9443cf..000000000000 --- a/test/Misc/ast-dump-decl.c +++ /dev/null @@ -1,168 +0,0 @@ -// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s -// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump %s | FileCheck -check-prefix CHECK-TU -strict-whitespace %s -// RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -fmodule-name=X -triple x86_64-unknown-unknown -fmodule-map-file=%S/Inputs/module.modulemap -ast-dump -ast-dump-filter Test %s -DMODULES | FileCheck -check-prefix CHECK -check-prefix CHECK-MODULES -strict-whitespace %s - -int TestLocation; -// CHECK: VarDecl 0x{{[^ ]*}} <{{.*}}:[[@LINE-1]]:1, col:5> col:5 TestLocation - -#ifdef MODULES -#pragma clang module begin X -#endif - -struct TestIndent { - int x; -}; -// CHECK: {{^}}RecordDecl{{.*TestIndent[^()]*$}} -// CHECK-NEXT: {{^}}`-FieldDecl{{.*x[^()]*$}} - -struct TestChildren { - int x; - struct y { - int z; - }; -}; -// CHECK: RecordDecl{{.*}}TestChildren -// CHECK-NEXT: FieldDecl{{.*}}x -// CHECK-NEXT: RecordDecl{{.*}}y -// CHECK-NEXT: FieldDecl{{.*}}z - -// CHECK-TU: TranslationUnitDecl - -void testLabelDecl() { - __label__ TestLabelDecl; - TestLabelDecl: goto TestLabelDecl; -} -// CHECK: LabelDecl{{.*}} TestLabelDecl - -typedef int TestTypedefDecl; -// CHECK: TypedefDecl{{.*}} TestTypedefDecl 'int' - -__module_private__ typedef int TestTypedefDeclPrivate; -// CHECK-MODULE: TypedefDecl{{.*}} TestTypedefDeclPrivate 'int' __module_private__ - -enum TestEnumDecl { - testEnumDecl -}; -// CHECK: EnumDecl{{.*}} TestEnumDecl -// CHECK-NEXT: EnumConstantDecl{{.*}} testEnumDecl - -struct TestEnumDeclAnon { - enum { - testEnumDeclAnon - } e; -}; -// CHECK: RecordDecl{{.*}} TestEnumDeclAnon -// CHECK-NEXT: EnumDecl{{.*> .*$}} - -enum TestEnumDeclForward; -// CHECK: EnumDecl{{.*}} TestEnumDeclForward - -__module_private__ enum TestEnumDeclPrivate; -// CHECK-MODULE: EnumDecl{{.*}} TestEnumDeclPrivate __module_private__ - -struct TestRecordDecl { - int i; -}; -// CHECK: RecordDecl{{.*}} struct TestRecordDecl -// CHECK-NEXT: FieldDecl - -struct TestRecordDeclEmpty { -}; -// CHECK: RecordDecl{{.*}} struct TestRecordDeclEmpty - -struct TestRecordDeclAnon1 { - struct { - } testRecordDeclAnon1; -}; -// CHECK: RecordDecl{{.*}} struct TestRecordDeclAnon1 -// CHECK-NEXT: RecordDecl{{.*}} struct - -struct TestRecordDeclAnon2 { - struct { - }; -}; -// CHECK: RecordDecl{{.*}} struct TestRecordDeclAnon2 -// CHECK-NEXT: RecordDecl{{.*}} struct - -struct TestRecordDeclForward; -// CHECK: RecordDecl{{.*}} struct TestRecordDeclForward - -__module_private__ struct TestRecordDeclPrivate; -// CHECK-MODULE: RecordDecl{{.*}} struct TestRecordDeclPrivate __module_private__ - -enum testEnumConstantDecl { - TestEnumConstantDecl, - TestEnumConstantDeclInit = 1 -}; -// CHECK: EnumConstantDecl{{.*}} TestEnumConstantDecl 'int' -// CHECK: EnumConstantDecl{{.*}} TestEnumConstantDeclInit 'int' -// CHECK-NEXT: IntegerLiteral - -struct testIndirectFieldDecl { - struct { - int TestIndirectFieldDecl; - }; -}; -// CHECK: IndirectFieldDecl{{.*}} TestIndirectFieldDecl 'int' -// CHECK-NEXT: Field{{.*}} '' -// CHECK-NEXT: Field{{.*}} 'TestIndirectFieldDecl' - -// FIXME: It would be nice to dump the enum and its enumerators. -int TestFunctionDecl(int x, enum { e } y) { - return x; -} -// CHECK: FunctionDecl{{.*}} TestFunctionDecl 'int (int, enum {{.*}})' -// CHECK-NEXT: ParmVarDecl{{.*}} x -// CHECK-NEXT: ParmVarDecl{{.*}} y -// CHECK-NEXT: CompoundStmt - -// FIXME: It would be nice to 'Enum' and 'e'. -int TestFunctionDecl2(enum Enum { e } x) { return x; } -// CHECK: FunctionDecl{{.*}} TestFunctionDecl2 'int (enum {{.*}})' -// CHECK-NEXT: ParmVarDecl{{.*}} x -// CHECK-NEXT: CompoundStmt - - -int TestFunctionDeclProto(int x); -// CHECK: FunctionDecl{{.*}} TestFunctionDeclProto 'int (int)' -// CHECK-NEXT: ParmVarDecl{{.*}} x - -extern int TestFunctionDeclSC(); -// CHECK: FunctionDecl{{.*}} TestFunctionDeclSC 'int ()' extern - -inline int TestFunctionDeclInline(); -// CHECK: FunctionDecl{{.*}} TestFunctionDeclInline 'int ()' inline - -struct testFieldDecl { - int TestFieldDecl; - int TestFieldDeclWidth : 1; - __module_private__ int TestFieldDeclPrivate; -}; -// CHECK: FieldDecl{{.*}} TestFieldDecl 'int' -// CHECK: FieldDecl{{.*}} TestFieldDeclWidth 'int' -// CHECK-NEXT: IntegerLiteral -// CHECK-MODULE: FieldDecl{{.*}} TestFieldDeclPrivate 'int' __module_private__ - -int TestVarDecl; -// CHECK: VarDecl{{.*}} TestVarDecl 'int' - -extern int TestVarDeclSC; -// CHECK: VarDecl{{.*}} TestVarDeclSC 'int' extern - -__thread int TestVarDeclThread; -// CHECK: VarDecl{{.*}} TestVarDeclThread 'int' tls{{$}} - -__module_private__ int TestVarDeclPrivate; -// CHECK-MODULE: VarDecl{{.*}} TestVarDeclPrivate 'int' __module_private__ - -int TestVarDeclInit = 0; -// CHECK: VarDecl{{.*}} TestVarDeclInit 'int' -// CHECK-NEXT: IntegerLiteral - -void testParmVarDecl(int TestParmVarDecl); -// CHECK: ParmVarDecl{{.*}} TestParmVarDecl 'int' - -#ifdef MODULES -#pragma clang module end -#endif - diff --git a/test/Misc/ast-dump-decl.cpp b/test/Misc/ast-dump-decl.cpp deleted file mode 100644 index 21ba7ec8dad2..000000000000 --- a/test/Misc/ast-dump-decl.cpp +++ /dev/null @@ -1,541 +0,0 @@ -// RUN: %clang_cc1 -std=c++11 -triple x86_64-linux-gnu -fms-extensions -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
-
-class testEnumDecl {
- enum class TestEnumDeclScoped;
- enum TestEnumDeclFixed : int;
-};
-// CHECK: EnumDecl{{.*}} class TestEnumDeclScoped 'int'
-// CHECK: EnumDecl{{.*}} TestEnumDeclFixed 'int'
-
-class testFieldDecl {
- int TestFieldDeclInit = 0;
-};
-// CHECK: FieldDecl{{.*}} TestFieldDeclInit 'int'
-// CHECK-NEXT: IntegerLiteral
-
-namespace testVarDeclNRVO {
- class A { };
- A foo() {
- A TestVarDeclNRVO;
- return TestVarDeclNRVO;
- }
-}
-// CHECK: VarDecl{{.*}} TestVarDeclNRVO 'testVarDeclNRVO::A' nrvo
-
-void testParmVarDeclInit(int TestParmVarDeclInit = 0);
-// CHECK: ParmVarDecl{{.*}} TestParmVarDeclInit 'int'
-// CHECK-NEXT: IntegerLiteral{{.*}}
-
-namespace TestNamespaceDecl {
- int i;
-}
-// CHECK: NamespaceDecl{{.*}} TestNamespaceDecl
-// CHECK-NEXT: VarDecl
-
-namespace TestNamespaceDecl {
- int j;
-}
-// CHECK: NamespaceDecl{{.*}} TestNamespaceDecl
-// CHECK-NEXT: original Namespace
-// CHECK-NEXT: VarDecl
-
-inline namespace TestNamespaceDeclInline {
-}
-// CHECK: NamespaceDecl{{.*}} TestNamespaceDeclInline inline
-
-namespace testUsingDirectiveDecl {
- namespace A {
- }
-}
-namespace TestUsingDirectiveDecl {
- using namespace testUsingDirectiveDecl::A;
-}
-// CHECK: NamespaceDecl{{.*}} TestUsingDirectiveDecl
-// CHECK-NEXT: UsingDirectiveDecl{{.*}} Namespace{{.*}} 'A'
-
-namespace testNamespaceAlias {
- namespace A {
- }
-}
-namespace TestNamespaceAlias = testNamespaceAlias::A;
-// CHECK: NamespaceAliasDecl{{.*}} TestNamespaceAlias
-// CHECK-NEXT: Namespace{{.*}} 'A'
-
-using TestTypeAliasDecl = int;
-// CHECK: TypeAliasDecl{{.*}} TestTypeAliasDecl 'int'
-
-namespace testTypeAliasTemplateDecl {
- template<typename T> class A;
- template<typename T> using TestTypeAliasTemplateDecl = A<T>;
-}
-// CHECK: TypeAliasTemplateDecl{{.*}} TestTypeAliasTemplateDecl
-// CHECK-NEXT: TemplateTypeParmDecl
-// CHECK-NEXT: TypeAliasDecl{{.*}} TestTypeAliasTemplateDecl 'A<T>'
-
-namespace testCXXRecordDecl {
- class TestEmpty {};
-// CHECK: CXXRecordDecl{{.*}} class TestEmpty
-// CHECK-NEXT: DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
-// CHECK-NEXT: DefaultConstructor exists trivial constexpr
-// CHECK-NEXT: CopyConstructor simple trivial has_const_param
-// CHECK-NEXT: MoveConstructor exists simple trivial
-// CHECK-NEXT: CopyAssignment trivial has_const_param
-// CHECK-NEXT: MoveAssignment exists simple trivial
-// CHECK-NEXT: Destructor simple irrelevant trivial
-
- class A { };
- class B { };
- class TestCXXRecordDecl : virtual A, public B {
- int i;
- };
-}
-// CHECK: CXXRecordDecl{{.*}} class TestCXXRecordDecl
-// CHECK-NEXT: DefinitionData{{$}}
-// CHECK-NEXT: DefaultConstructor exists non_trivial
-// CHECK-NEXT: CopyConstructor simple non_trivial has_const_param
-// CHECK-NEXT: MoveConstructor exists simple non_trivial
-// CHECK-NEXT: CopyAssignment non_trivial has_const_param
-// CHECK-NEXT: MoveAssignment exists simple non_trivial
-// CHECK-NEXT: Destructor simple irrelevant trivial
-// CHECK-NEXT: virtual private 'testCXXRecordDecl::A'
-// CHECK-NEXT: public 'testCXXRecordDecl::B'
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestCXXRecordDecl
-// CHECK-NEXT: FieldDecl
-
-template<class...T>
-class TestCXXRecordDeclPack : public T... {
-};
-// CHECK: CXXRecordDecl{{.*}} class TestCXXRecordDeclPack
-// CHECK: public 'T'...
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestCXXRecordDeclPack
-
-thread_local int TestThreadLocalInt;
-// CHECK: TestThreadLocalInt {{.*}} tls_dynamic
-
-class testCXXMethodDecl {
- virtual void TestCXXMethodDeclPure() = 0;
- void TestCXXMethodDeclDelete() = delete;
- void TestCXXMethodDeclThrow() throw();
- void TestCXXMethodDeclThrowType() throw(int);
-};
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclPure 'void ()' virtual pure
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclDelete 'void ()' delete
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclThrow 'void () throw()'
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclThrowType 'void () throw(int)'
-
-namespace testCXXConstructorDecl {
- class A { };
- class TestCXXConstructorDecl : public A {
- int I;
- TestCXXConstructorDecl(A &a, int i) : A(a), I(i) { }
- TestCXXConstructorDecl(A &a) : TestCXXConstructorDecl(a, 0) { }
- };
-}
-// CHECK: CXXConstructorDecl{{.*}} TestCXXConstructorDecl 'void {{.*}}'
-// CHECK-NEXT: ParmVarDecl{{.*}} a
-// CHECK-NEXT: ParmVarDecl{{.*}} i
-// CHECK-NEXT: CXXCtorInitializer{{.*}}A
-// CHECK-NEXT: Expr
-// CHECK: CXXCtorInitializer{{.*}}I
-// CHECK-NEXT: Expr
-// CHECK: CompoundStmt
-// CHECK: CXXConstructorDecl{{.*}} TestCXXConstructorDecl 'void {{.*}}'
-// CHECK-NEXT: ParmVarDecl{{.*}} a
-// CHECK-NEXT: CXXCtorInitializer{{.*}}TestCXXConstructorDecl
-// CHECK-NEXT: CXXConstructExpr{{.*}}TestCXXConstructorDecl
-
-class TestCXXDestructorDecl {
- ~TestCXXDestructorDecl() { }
-};
-// CHECK: CXXDestructorDecl{{.*}} ~TestCXXDestructorDecl 'void () noexcept'
-// CHECK-NEXT: CompoundStmt
-
-// Test that the range of a defaulted members is computed correctly.
-class TestMemberRanges {
-public:
- TestMemberRanges() = default;
- TestMemberRanges(const TestMemberRanges &Other) = default;
- TestMemberRanges(TestMemberRanges &&Other) = default;
- ~TestMemberRanges() = default;
- TestMemberRanges &operator=(const TestMemberRanges &Other) = default;
- TestMemberRanges &operator=(TestMemberRanges &&Other) = default;
-};
-void SomeFunction() {
- TestMemberRanges A;
- TestMemberRanges B(A);
- B = A;
- A = static_cast<TestMemberRanges &&>(B);
- TestMemberRanges C(static_cast<TestMemberRanges &&>(A));
-}
-// CHECK: CXXConstructorDecl{{.*}} <line:{{.*}}:3, col:30>
-// CHECK: CXXConstructorDecl{{.*}} <line:{{.*}}:3, col:59>
-// CHECK: CXXConstructorDecl{{.*}} <line:{{.*}}:3, col:54>
-// CHECK: CXXDestructorDecl{{.*}} <line:{{.*}}:3, col:31>
-// CHECK: CXXMethodDecl{{.*}} <line:{{.*}}:3, col:70>
-// CHECK: CXXMethodDecl{{.*}} <line:{{.*}}:3, col:65>
-
-class TestCXXConversionDecl {
- operator int() { return 0; }
-};
-// CHECK: CXXConversionDecl{{.*}} operator int 'int ()'
-// CHECK-NEXT: CompoundStmt
-
-namespace TestStaticAssertDecl {
- static_assert(true, "msg");
-}
-// CHECK: NamespaceDecl{{.*}} TestStaticAssertDecl
-// CHECK-NEXT: StaticAssertDecl{{.*> .*$}}
-// CHECK-NEXT: CXXBoolLiteralExpr
-// CHECK-NEXT: StringLiteral
-
-namespace testFunctionTemplateDecl {
- class A { };
- class B { };
- class C { };
- class D { };
- template<typename T> void TestFunctionTemplate(T) { }
-
- // implicit instantiation
- void bar(A a) { TestFunctionTemplate(a); }
-
- // explicit specialization
- template<> void TestFunctionTemplate(B);
-
- // explicit instantiation declaration
- extern template void TestFunctionTemplate(C);
-
- // explicit instantiation definition
- template void TestFunctionTemplate(D);
-}
-// CHECK: FunctionTemplateDecl{{.*}} TestFunctionTemplate
-// CHECK-NEXT: TemplateTypeParmDecl
-// CHECK-NEXT: FunctionDecl{{.*}} TestFunctionTemplate 'void (T)'
-// CHECK-NEXT: ParmVarDecl{{.*}} 'T'
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: FunctionDecl{{.*}} TestFunctionTemplate {{.*}}A
-// CHECK-NEXT: TemplateArgument
-// CHECK-NEXT: ParmVarDecl
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: Function{{.*}} 'TestFunctionTemplate' {{.*}}B
-// CHECK-NEXT: FunctionDecl{{.*}} TestFunctionTemplate {{.*}}C
-// CHECK-NEXT: TemplateArgument
-// CHECK-NEXT: ParmVarDecl
-// CHECK-NEXT: FunctionDecl{{.*}} TestFunctionTemplate {{.*}}D
-// CHECK-NEXT: TemplateArgument
-// CHECK-NEXT: ParmVarDecl
-// CHECK-NEXT: CompoundStmt
-// CHECK: FunctionDecl{{.*}} TestFunctionTemplate {{.*}}B
-// CHECK-NEXT: TemplateArgument
-// CHECK-NEXT: ParmVarDecl
-
-namespace testClassTemplateDecl {
- class A { };
- class B { };
- class C { };
- class D { };
-
- template<typename T> class TestClassTemplate {
- public:
- TestClassTemplate();
- ~TestClassTemplate();
- int j();
- int i;
- };
-
- // implicit instantiation
- TestClassTemplate<A> a;
-
- // explicit specialization
- template<> class TestClassTemplate<B> {
- int j;
- };
-
- // explicit instantiation declaration
- extern template class TestClassTemplate<C>;
-
- // explicit instantiation definition
- template class TestClassTemplate<D>;
-
- // partial explicit specialization
- template<typename T1, typename T2> class TestClassTemplatePartial {
- int i;
- };
- template<typename T1> class TestClassTemplatePartial<T1, A> {
- int j;
- };
-}
-// CHECK: ClassTemplateDecl{{.*}} TestClassTemplate
-// CHECK-NEXT: TemplateTypeParmDecl
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK: CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT: AccessSpecDecl{{.*}} public
-// CHECK-NEXT: CXXConstructorDecl{{.*}} <line:{{.*}}:5, col:23>
-// CHECK-NEXT: CXXDestructorDecl{{.*}} <line:{{.*}}:5, col:24>
-// CHECK-NEXT: CXXMethodDecl{{.*}} <line:{{.*}}:5, col:11>
-// CHECK-NEXT: FieldDecl{{.*}} i
-// CHECK-NEXT: ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK: TemplateArgument{{.*}}A
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT: AccessSpecDecl{{.*}} public
-// CHECK-NEXT: CXXConstructorDecl{{.*}} <line:{{.*}}:5, col:23>
-// CHECK-NEXT: CXXDestructorDecl{{.*}} <line:{{.*}}:5, col:24>
-// CHECK-NEXT: CXXMethodDecl{{.*}} <line:{{.*}}:5, col:11>
-// CHECK-NEXT: FieldDecl{{.*}} i
-// CHECK: ClassTemplateSpecialization{{.*}} 'TestClassTemplate'
-// CHECK-NEXT: ClassTemplateSpecialization{{.*}} 'TestClassTemplate'
-// CHECK-NEXT: ClassTemplateSpecialization{{.*}} 'TestClassTemplate'
-
-// CHECK: ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT: DefinitionData
-// CHECK: TemplateArgument{{.*}}B
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT: FieldDecl{{.*}} j
-
-// CHECK: ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK: TemplateArgument{{.*}}C
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT: AccessSpecDecl{{.*}} public
-// CHECK-NEXT: CXXConstructorDecl{{.*}} <line:{{.*}}:5, col:23>
-// CHECK-NEXT: CXXDestructorDecl{{.*}} <line:{{.*}}:5, col:24>
-// CHECK-NEXT: CXXMethodDecl{{.*}} <line:{{.*}}:5, col:11>
-// CHECK-NEXT: FieldDecl{{.*}} i
-
-// CHECK: ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK: TemplateArgument{{.*}}D
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT: AccessSpecDecl{{.*}} public
-// CHECK-NEXT: CXXConstructorDecl{{.*}} <line:{{.*}}:5, col:23>
-// CHECK-NEXT: CXXDestructorDecl{{.*}} <line:{{.*}}:5, col:24>
-// CHECK-NEXT: CXXMethodDecl{{.*}} <line:{{.*}}:5, col:11>
-// CHECK-NEXT: FieldDecl{{.*}} i
-
-// CHECK: ClassTemplatePartialSpecializationDecl{{.*}} class TestClassTemplatePartial
-// CHECK: TemplateArgument
-// CHECK-NEXT: TemplateArgument{{.*}}A
-// CHECK-NEXT: TemplateTypeParmDecl
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplatePartial
-// CHECK-NEXT: FieldDecl{{.*}} j
-
-// PR15220 dump instantiation only once
-namespace testCanonicalTemplate {
- class A {};
-
- template<typename T> void TestFunctionTemplate(T);
- template<typename T> void TestFunctionTemplate(T);
- void bar(A a) { TestFunctionTemplate(a); }
- // CHECK: FunctionTemplateDecl{{.*}} TestFunctionTemplate
- // CHECK-NEXT: TemplateTypeParmDecl
- // CHECK-NEXT: FunctionDecl{{.*}} TestFunctionTemplate 'void (T)'
- // CHECK-NEXT: ParmVarDecl{{.*}} 'T'
- // CHECK-NEXT: FunctionDecl{{.*}} TestFunctionTemplate {{.*}}A
- // CHECK-NEXT: TemplateArgument
- // CHECK-NEXT: ParmVarDecl
- // CHECK: FunctionTemplateDecl{{.*}} TestFunctionTemplate
- // CHECK-NEXT: TemplateTypeParmDecl
- // CHECK-NEXT: FunctionDecl{{.*}} TestFunctionTemplate 'void (T)'
- // CHECK-NEXT: ParmVarDecl{{.*}} 'T'
- // CHECK-NEXT: Function{{.*}} 'TestFunctionTemplate'
- // CHECK-NOT: TemplateArgument
-
- template<typename T1> class TestClassTemplate {
- template<typename T2> friend class TestClassTemplate;
- };
- TestClassTemplate<A> a;
- // CHECK: ClassTemplateDecl{{.*}} TestClassTemplate
- // CHECK-NEXT: TemplateTypeParmDecl
- // CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
- // CHECK: CXXRecordDecl{{.*}} class TestClassTemplate
- // CHECK-NEXT: FriendDecl
- // CHECK-NEXT: ClassTemplateDecl{{.*}} TestClassTemplate
- // CHECK-NEXT: TemplateTypeParmDecl
- // CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
- // CHECK-NEXT: ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
- // CHECK: TemplateArgument{{.*}}A
- // CHECK-NEXT: CXXRecordDecl{{.*}} class TestClassTemplate
-}
-
-template <class T>
-class TestClassScopeFunctionSpecialization {
- template<class U> void foo(U a) { }
- template<> void foo<int>(int a) { }
-};
-// CHECK: ClassScopeFunctionSpecializationDecl
-// CHECK-NEXT: CXXMethod{{.*}} foo 'void (int)'
-// CHECK-NEXT: ParmVarDecl
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: TemplateArgument{{.*}} 'int'
-
-namespace TestTemplateTypeParmDecl {
- template<typename ... T, class U = int> void foo();
-}
-// CHECK: NamespaceDecl{{.*}} TestTemplateTypeParmDecl
-// CHECK-NEXT: FunctionTemplateDecl
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} typename depth 0 index 0 ... T
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} class depth 0 index 1 U
-// CHECK-NEXT: TemplateArgument type 'int'
-
-namespace TestNonTypeTemplateParmDecl {
- template<int I = 1, int ... J> void foo();
-}
-// CHECK: NamespaceDecl{{.*}} TestNonTypeTemplateParmDecl
-// CHECK-NEXT: FunctionTemplateDecl
-// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int' depth 0 index 0 I
-// CHECK-NEXT: TemplateArgument expr
-// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
-// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int' depth 0 index 1 ... J
-
-namespace TestTemplateTemplateParmDecl {
- template<typename T> class A;
- template <template <typename> class T = A, template <typename> class ... U> void foo();
-}
-// CHECK: NamespaceDecl{{.*}} TestTemplateTemplateParmDecl
-// CHECK: FunctionTemplateDecl
-// CHECK-NEXT: TemplateTemplateParmDecl{{.*}} T
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} typename
-// CHECK-NEXT: TemplateArgument{{.*}} template A
-// CHECK-NEXT: TemplateTemplateParmDecl{{.*}} ... U
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} typename
-
-namespace TestTemplateArgument {
- template<typename> class A { };
- template<template<typename> class ...> class B { };
- int foo();
-
- template<typename> class testType { };
- template class testType<int>;
- // CHECK: ClassTemplateSpecializationDecl{{.*}} class testType
- // CHECK: TemplateArgument{{.*}} type 'int'
-
- template<int fp(void)> class testDecl { };
- template class testDecl<foo>;
- // CHECK: ClassTemplateSpecializationDecl{{.*}} class testDecl
- // CHECK: TemplateArgument{{.*}} decl
- // CHECK-NEXT: Function{{.*}}foo
-
- template class testDecl<nullptr>;
- // CHECK: ClassTemplateSpecializationDecl{{.*}} class testDecl
- // CHECK: TemplateArgument{{.*}} nullptr
-
- template<int> class testIntegral { };
- template class testIntegral<1>;
- // CHECK: ClassTemplateSpecializationDecl{{.*}} class testIntegral
- // CHECK: TemplateArgument{{.*}} integral 1
-
- template<template<typename> class> class testTemplate { };
- template class testTemplate<A>;
- // CHECK: ClassTemplateSpecializationDecl{{.*}} class testTemplate
- // CHECK: TemplateArgument{{.*}} A
-
- template<template<typename> class ...T> class C {
- B<T...> testTemplateExpansion;
- };
- // FIXME: Need TemplateSpecializationType dumping to test TemplateExpansion.
-
- template<int, int = 0> class testExpr;
- template<int I> class testExpr<I> { };
- // CHECK: ClassTemplatePartialSpecializationDecl{{.*}} class testExpr
- // CHECK: TemplateArgument{{.*}} expr
- // CHECK-NEXT: DeclRefExpr{{.*}}I
-
- template<int, int ...> class testPack { };
- template class testPack<0, 1, 2>;
- // CHECK: ClassTemplateSpecializationDecl{{.*}} class testPack
- // CHECK: TemplateArgument{{.*}} integral 0
- // CHECK-NEXT: TemplateArgument{{.*}} pack
- // CHECK-NEXT: TemplateArgument{{.*}} integral 1
- // CHECK-NEXT: TemplateArgument{{.*}} integral 2
-}
-
-namespace testUsingDecl {
- int i;
-}
-namespace TestUsingDecl {
- using testUsingDecl::i;
-}
-// CHECK: NamespaceDecl{{.*}} TestUsingDecl
-// CHECK-NEXT: UsingDecl{{.*}} testUsingDecl::i
-// CHECK-NEXT: UsingShadowDecl{{.*}} Var{{.*}} 'i' 'int'
-
-namespace testUnresolvedUsing {
- class A { };
- template<class T> class B {
- public:
- A a;
- };
- template<class T> class TestUnresolvedUsing : public B<T> {
- using typename B<T>::a;
- using B<T>::a;
- };
-}
-// CHECK: CXXRecordDecl{{.*}} TestUnresolvedUsing
-// CHECK: UnresolvedUsingTypenameDecl{{.*}} B<T>::a
-// CHECK: UnresolvedUsingValueDecl{{.*}} B<T>::a
-
-namespace TestLinkageSpecDecl {
- extern "C" void test1();
- extern "C++" void test2();
-}
-// CHECK: NamespaceDecl{{.*}} TestLinkageSpecDecl
-// CHECK-NEXT: LinkageSpecDecl{{.*}} C
-// CHECK-NEXT: FunctionDecl
-// CHECK-NEXT: LinkageSpecDecl{{.*}} C++
-// CHECK-NEXT: FunctionDecl
-
-class TestAccessSpecDecl {
-public:
-private:
-protected:
-};
-// CHECK: CXXRecordDecl{{.*}} class TestAccessSpecDecl
-// CHECK: CXXRecordDecl{{.*}} class TestAccessSpecDecl
-// CHECK-NEXT: AccessSpecDecl{{.*}} public
-// CHECK-NEXT: AccessSpecDecl{{.*}} private
-// CHECK-NEXT: AccessSpecDecl{{.*}} protected
-
-template<typename T> class TestFriendDecl {
- friend int foo();
- friend class A;
- friend T;
-};
-// CHECK: CXXRecord{{.*}} TestFriendDecl
-// CHECK: CXXRecord{{.*}} TestFriendDecl
-// CHECK-NEXT: FriendDecl
-// CHECK-NEXT: FunctionDecl{{.*}} foo
-// CHECK-NEXT: FriendDecl{{.*}} 'class A':'A'
-// CHECK-NEXT: FriendDecl{{.*}} 'T'
-
-namespace TestFileScopeAsmDecl {
- asm("ret");
-}
-// CHECK: NamespaceDecl{{.*}} TestFileScopeAsmDecl{{$}}
-// CHECK: FileScopeAsmDecl{{.*> .*$}}
-// CHECK-NEXT: StringLiteral
-
-namespace TestFriendDecl2 {
- void f();
- struct S {
- friend void f();
- };
-}
-// CHECK: NamespaceDecl [[TestFriendDecl2:0x.*]] <{{.*}}> {{.*}} TestFriendDecl2
-// CHECK: |-FunctionDecl [[TestFriendDecl2_f:0x.*]] <{{.*}}> {{.*}} f 'void ()'
-// CHECK: `-CXXRecordDecl {{.*}} struct S
-// CHECK: |-CXXRecordDecl {{.*}} struct S
-// CHECK: `-FriendDecl
-// CHECK: `-FunctionDecl {{.*}} parent [[TestFriendDecl2]] prev [[TestFriendDecl2_f]] <{{.*}}> {{.*}} f 'void ()'
-
-namespace Comment {
- extern int Test;
- /// Something here.
- extern int Test;
- extern int Test;
-}
-
-// CHECK: VarDecl {{.*}} Test 'int' extern
-// CHECK-NOT: FullComment
-// CHECK: VarDecl {{.*}} Test 'int' extern
-// CHECK: `-FullComment
-// CHECK: `-ParagraphComment
-// CHECK: `-TextComment
-// CHECK: VarDecl {{.*}} Test 'int' extern
-// CHECK-NOT: FullComment
diff --git a/test/Misc/ast-dump-decl.m b/test/Misc/ast-dump-decl.m deleted file mode 100644 index 4cfb8aa0c41d..000000000000 --- a/test/Misc/ast-dump-decl.m +++ /dev/null @@ -1,145 +0,0 @@ -// RUN: %clang_cc1 -Wno-unused -fblocks -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s - -@protocol P -@end - -@interface A -@end - -@interface TestObjCIvarDecl : A -@end - -@implementation TestObjCIvarDecl { - int varDefault; - @private int varPrivate; - @protected int varProtected; - @public int varPublic; - @package int varPackage; -} -@end -// CHECK: ObjCImplementationDecl{{.*}} TestObjCIvarDecl -// CHECK-NEXT: ObjCInterface{{.*}} 'TestObjCIvarDecl' -// CHECK-NEXT: ObjCIvarDecl{{.*}} varDefault 'int' private -// CHECK-NEXT: ObjCIvarDecl{{.*}} varPrivate 'int' private -// CHECK-NEXT: ObjCIvarDecl{{.*}} varProtected 'int' protected -// CHECK-NEXT: ObjCIvarDecl{{.*}} varPublic 'int' public -// CHECK-NEXT: ObjCIvarDecl{{.*}} varPackage 'int' package - -@interface testObjCMethodDecl : A { -} -- (int) TestObjCMethodDecl: (int)i, ...; -// CHECK: ObjCMethodDecl{{.*}} - TestObjCMethodDecl: 'int' -// CHECK-NEXT: ParmVarDecl{{.*}} i 'int' -// CHECK-NEXT: ... -@end - -@implementation testObjCMethodDecl -- (int) TestObjCMethodDecl: (int)i, ... { - return 0; -} -// CHECK: ObjCMethodDecl{{.*}} - TestObjCMethodDecl: 'int' -// CHECK-NEXT: ImplicitParamDecl{{.*}} self -// CHECK-NEXT: ImplicitParamDecl{{.*}} _cmd -// CHECK-NEXT: ParmVarDecl{{.*}} i 'int' -// CHECK-NEXT: ... -// CHECK-NEXT: CompoundStmt -@end - -@protocol TestObjCProtocolDecl -- (void) foo; -@end -// CHECK: ObjCProtocolDecl{{.*}} TestObjCProtocolDecl -// CHECK-NEXT: ObjCMethodDecl{{.*}} foo - -@interface TestObjCClass : A <P> -- (void) foo; -@end -// CHECK: ObjCInterfaceDecl{{.*}} TestObjCClass -// CHECK-NEXT: super ObjCInterface{{.*}} 'A' -// CHECK-NEXT: ObjCImplementation{{.*}} 'TestObjCClass' -// CHECK-NEXT: ObjCProtocol{{.*}} 'P' -// CHECK-NEXT: ObjCMethodDecl{{.*}} foo - -@implementation TestObjCClass : A { - int i; -} -- (void) foo { -} -@end -// CHECK: ObjCImplementationDecl{{.*}} TestObjCClass -// CHECK-NEXT: super ObjCInterface{{.*}} 'A' -// CHECK-NEXT: ObjCInterface{{.*}} 'TestObjCClass' -// CHECK-NEXT: ObjCIvarDecl{{.*}} i -// CHECK-NEXT: ObjCMethodDecl{{.*}} foo - -@interface TestObjCClass (TestObjCCategoryDecl) <P> -- (void) bar; -@end -// CHECK: ObjCCategoryDecl{{.*}} TestObjCCategoryDecl -// CHECK-NEXT: ObjCInterface{{.*}} 'TestObjCClass' -// CHECK-NEXT: ObjCCategoryImpl{{.*}} 'TestObjCCategoryDecl' -// CHECK-NEXT: ObjCProtocol{{.*}} 'P' -// CHECK-NEXT: ObjCMethodDecl{{.*}} bar - -@implementation TestObjCClass (TestObjCCategoryDecl) -- (void) bar { -} -@end -// CHECK: ObjCCategoryImplDecl{{.*}} TestObjCCategoryDecl -// CHECK-NEXT: ObjCInterface{{.*}} 'TestObjCClass' -// CHECK-NEXT: ObjCCategory{{.*}} 'TestObjCCategoryDecl' -// CHECK-NEXT: ObjCMethodDecl{{.*}} bar - -@compatibility_alias TestObjCCompatibleAliasDecl A; -// CHECK: ObjCCompatibleAliasDecl{{.*}} TestObjCCompatibleAliasDecl -// CHECK-NEXT: ObjCInterface{{.*}} 'A' - -@interface TestObjCProperty: A -@property(getter=getterFoo, setter=setterFoo:) int foo; -@property int bar; -@end -// CHECK: ObjCInterfaceDecl{{.*}} TestObjCProperty -// CHECK: ObjCPropertyDecl{{.*}} foo 'int' assign readwrite atomic unsafe_unretained -// CHECK-NEXT: getter ObjCMethod{{.*}} 'getterFoo' -// CHECK-NEXT: setter ObjCMethod{{.*}} 'setterFoo:' -// CHECK-NEXT: ObjCPropertyDecl{{.*}} bar 'int' assign readwrite atomic unsafe_unretained -// CHECK-NEXT: ObjCMethodDecl{{.*}} getterFoo -// CHECK-NEXT: ObjCMethodDecl{{.*}} setterFoo: -// CHECK-NEXT: ParmVarDecl{{.*}} foo -// CHECK-NEXT: ObjCMethodDecl{{.*}} bar -// CHECK-NEXT: ObjCMethodDecl{{.*}} setBar: -// CHECK-NEXT: ParmVarDecl{{.*}} bar - -@implementation TestObjCProperty { - int i; -} -@synthesize foo=i; -@synthesize bar; -@end -// CHECK: ObjCImplementationDecl{{.*}} TestObjCProperty -// CHECK: ObjCPropertyImplDecl{{.*}} foo synthesize -// CHECK-NEXT: ObjCProperty{{.*}} 'foo' -// CHECK-NEXT: ObjCIvar{{.*}} 'i' 'int' -// CHECK-NEXT: ObjCIvarDecl{{.*}} bar 'int' synthesize private -// CHECK-NEXT: ObjCPropertyImplDecl{{.*}} bar synthesize -// CHECK-NEXT: ObjCProperty{{.*}} 'bar' -// CHECK-NEXT: ObjCIvar{{.*}} 'bar' 'int' - -void TestBlockDecl(int x) { - ^(int y, ...){ x; }; -} -// CHECK: FunctionDecl{{.*}}TestBlockDecl -// CHECK: BlockDecl -// CHECK-NEXT: ParmVarDecl{{.*}} y 'int' -// CHECK-NEXT: ... -// CHECK-NEXT: capture ParmVar{{.*}} 'x' 'int' -// CHECK-NEXT: CompoundStmt - -@interface B -+ (int) foo; -@end - -void f() { - __typeof__(B.foo) Test; -} -// CHECK: VarDecl{{.*}}Test 'typeof (B.foo)':'int' diff --git a/test/Misc/ast-dump-decl.mm b/test/Misc/ast-dump-decl.mm deleted file mode 100644 index be245f7ef5cd..000000000000 --- a/test/Misc/ast-dump-decl.mm +++ /dev/null @@ -1,33 +0,0 @@ -// RUN: %clang_cc1 -Wno-unused -fblocks -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s - -@interface A -@end - -@interface TestObjCImplementation : A -@end - -@implementation TestObjCImplementation : A { - struct X { - int i; - } X; -} -- (void) foo { -} -@end -// CHECK: ObjCImplementationDecl{{.*}} TestObjCImplementation -// CHECK-NEXT: super ObjCInterface{{.*}} 'A' -// CHECK-NEXT: ObjCInterface{{.*}} 'TestObjCImplementation' -// CHECK-NEXT: CXXCtorInitializer{{.*}} 'X' -// CHECK-NEXT: CXXConstructExpr -// CHECK-NEXT: ObjCIvarDecl{{.*}} X -// CHECK-NEXT: ObjCMethodDecl{{.*}} foo - -// @() boxing expressions. -template <typename T> -struct BoxingTest { - static id box(T value) { - return @(value); - } -}; - -// CHECK: ObjCBoxedExpr{{.*}} '<dependent type>'{{$}} diff --git a/test/Misc/ast-dump-invalid.cpp b/test/Misc/ast-dump-invalid.cpp deleted file mode 100644 index 1f7442155e33..000000000000 --- a/test/Misc/ast-dump-invalid.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// RUN: not %clang_cc1 -std=c++11 -triple x86_64-linux-gnu -fms-extensions -ast-dump -ast-dump-filter Test %s | FileCheck -check-prefix CHECK -strict-whitespace %s - -namespace TestInvalidRParenOnCXXUnresolvedConstructExpr { -template <class T> -void f(T i, T j) { - return T (i, j; -} -} - -// CHECK: NamespaceDecl {{.*}} <{{.*}}> {{.*}} TestInvalidRParenOnCXXUnresolvedConstructExpr -// CHECK-NEXT: `-FunctionTemplateDecl -// CHECK-NEXT: |-TemplateTypeParmDecl -// CHECK-NEXT: `-FunctionDecl -// CHECK-NEXT: |-ParmVarDecl -// CHECK-NEXT: |-ParmVarDecl -// CHECK-NEXT: `-CompoundStmt -// CHECK-NEXT: `-ReturnStmt -// CHECK-NEXT: `-CXXUnresolvedConstructExpr {{.*}} <col:10, col:16> 'T' -// CHECK-NEXT: |-DeclRefExpr {{.*}} <col:13> 'T' lvalue ParmVar {{.*}} 'i' 'T' -// CHECK-NEXT: `-DeclRefExpr {{.*}} <col:16> 'T' lvalue ParmVar {{.*}} 'j' 'T' - - -namespace TestInvalidIf { -int g(int i) { - if (invalid_condition) - return 4; - else - return i; -} -} -// CHECK: NamespaceDecl {{.*}} <{{.*}}> {{.*}} TestInvalidIf -// CHECK-NEXT: `-FunctionDecl -// CHECK-NEXT: |-ParmVarDecl -// CHECK-NEXT: `-CompoundStmt -// CHECK-NEXT: `-IfStmt {{.*}} <line:25:3, line:28:12> -// CHECK-NEXT: |-<<<NULL>>> -// CHECK-NEXT: |-<<<NULL>>> -// CHECK-NEXT: |-OpaqueValueExpr {{.*}} <<invalid sloc>> 'bool' -// CHECK-NEXT: |-ReturnStmt {{.*}} <line:26:5, col:12> -// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:12> 'int' 4 -// CHECK-NEXT: `-ReturnStmt {{.*}} <line:28:5, col:12> -// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <col:12> 'int' <LValueToRValue> -// CHECK-NEXT: `-DeclRefExpr {{.*}} <col:12> 'int' lvalue ParmVar {{.*}} 'i' 'int' - -namespace TestInvalidFunctionDecl { -struct Str { - double foo1(double, invalid_type); -}; -double Str::foo1(double, invalid_type) -{ return 45; } -} -// CHECK: NamespaceDecl {{.*}} <{{.*}}> {{.*}} TestInvalidFunctionDecl -// CHECK-NEXT: |-CXXRecordDecl {{.*}} <line:46:1, line:48:1> line:46:8 struct Str definition -// CHECK: | |-CXXRecordDecl {{.*}} <col:1, col:8> col:8 implicit struct Str -// CHECK-NEXT: | `-CXXMethodDecl {{.*}} <line:47:4, col:36> col:11 invalid foo1 'double (double, int)' -// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16> col:22 'double' -// CHECK-NEXT: | `-ParmVarDecl {{.*}} <col:24, <invalid sloc>> col:36 invalid 'int' -// CHECK-NEXT: `-CXXMethodDecl {{.*}} parent {{.*}} <line:49:1, line:50:14> line:49:13 invalid foo1 'double (double, int)' -// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:18> col:24 'double' -// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:26, <invalid sloc>> col:38 invalid 'int' -// CHECK-NEXT: `-CompoundStmt {{.*}} <line:50:1, col:14> -// CHECK-NEXT: `-ReturnStmt {{.*}} <col:3, col:10> -// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <col:10> 'double' <IntegralToFloating> -// CHECK-NEXT: `-IntegerLiteral {{.*}} <col:10> 'int' 45 diff --git a/test/Misc/ast-dump-lookups.cpp b/test/Misc/ast-dump-lookups.cpp deleted file mode 100644 index 2d235010cb73..000000000000 --- a/test/Misc/ast-dump-lookups.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// RUN: %clang_cc1 -std=c++11 -ast-dump -ast-dump-filter Test %s | FileCheck -check-prefix DECLS %s -// RUN: %clang_cc1 -std=c++11 -ast-dump-lookups -ast-dump-filter Test %s | FileCheck -check-prefix LOOKUPS %s -// RUN: %clang_cc1 -std=c++11 -ast-dump -ast-dump-lookups -ast-dump-filter Test %s | FileCheck -check-prefix DECLS-LOOKUPS %s -// RUN: %clang_cc1 -std=c++11 -DPRAGMA -fsyntax-only %s 2>&1 | FileCheck -check-prefix PRAGMA %s - -namespace Test { - typedef int T; - extern int a; - int a = 0; -} - -#ifdef PRAGMA -#pragma clang __debug dump Test -// PRAGMA: lookup results for Test: -// PRAGMA-NEXT: NamespaceDecl {{.*}} Test -// PRAGMA-NEXT: |-TypedefDecl {{.*}} T 'int' -// PRAGMA-NEXT: | `-BuiltinType {{.*}} 'int' -// PRAGMA-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern -// PRAGMA-NEXT: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit -// PRAGMA-NEXT: `-IntegerLiteral {{.*}} 'int' 0 -#endif - -namespace Test { } - -// DECLS: Dumping Test: -// DECLS-NEXT: NamespaceDecl {{.*}} Test -// DECLS-NEXT: |-TypedefDecl {{.*}} T 'int' -// DECLS-NEXT: | `-BuiltinType {{.*}} 'int' -// DECLS-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern -// DECLS-NEXT: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit -// DECLS-NEXT: `-IntegerLiteral {{.*}} 'int' 0 -// -// DECLS: Dumping Test: -// DECLS-NEXT: NamespaceDecl {{.*}} Test - -// LOOKUPS: Dumping Test: -// LOOKUPS-NEXT: StoredDeclsMap Namespace {{.*}} 'Test' -// LOOKUPS: DeclarationName 'a' -// LOOKUPS-NEXT: `-Var {{.*}} 'a' 'int' -// -// LOOKUPS: Dumping Test: -// LOOKUPS-NEXT: Lookup map is in primary DeclContext - -// DECLS-LOOKUPS: Dumping Test: -// DECLS-LOOKUPS-NEXT: StoredDeclsMap Namespace {{.*}} 'Test' -// DECLS-LOOKUPS: -DeclarationName 'a' -// DECLS-LOOKUPS-NEXT: `-Var [[A:[^ ]*]] 'a' 'int' -// DECLS-LOOKUPS-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern -// DECLS-LOOKUPS-NEXT: `-VarDecl [[A]] prev [[EXTERN_A]] {{.*}} a 'int' cinit -// DECLS-LOOKUPS-NEXT: `-IntegerLiteral {{.*}} 'int' 0 -// -// DECLS-LOOKUPS: Dumping Test: -// DECLS-LOOKUPS-NEXT: Lookup map is in primary DeclContext diff --git a/test/Misc/ast-dump-msp430-attr.c b/test/Misc/ast-dump-msp430-attr.c deleted file mode 100644 index 3ccb3bdb705f..000000000000 --- a/test/Misc/ast-dump-msp430-attr.c +++ /dev/null @@ -1,5 +0,0 @@ -// RUN: %clang_cc1 -triple msp430-unknown-unknown -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s - -__attribute__((interrupt(12))) void Test(void); -// CHECK: FunctionDecl{{.*}}Test -// CHECK-NEXT: MSP430InterruptAttr diff --git a/test/Misc/ast-dump-pipe.cl b/test/Misc/ast-dump-pipe.cl deleted file mode 100644 index ceed2f6f8992..000000000000 --- a/test/Misc/ast-dump-pipe.cl +++ /dev/null @@ -1,12 +0,0 @@ -// RUN: %clang_cc1 -triple spir64 -cl-std=CL2.0 -ast-dump -ast-dump-filter pipetype %s | FileCheck -strict-whitespace %s -typedef pipe int pipetype; -// CHECK: PipeType {{.*}} 'read_only pipe int' -// CHECK-NEXT: BuiltinType {{.*}} 'int' - -typedef read_only pipe int pipetype2; -// CHECK: PipeType {{.*}} 'read_only pipe int' -// CHECK-NEXT: BuiltinType {{.*}} 'int' - -typedef write_only pipe int pipetype3; -// CHECK: PipeType {{.*}} 'write_only pipe int' -// CHECK-NEXT: BuiltinType {{.*}} 'int' diff --git a/test/Misc/ast-dump-stmt.c b/test/Misc/ast-dump-stmt.c deleted file mode 100644 index 461893188a16..000000000000 --- a/test/Misc/ast-dump-stmt.c +++ /dev/null @@ -1,67 +0,0 @@ -// RUN: %clang_cc1 -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s - -int TestLocation = 0; -// CHECK: VarDecl{{.*}}TestLocation -// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:20> 'int' 0 - -int TestIndent = 1 + (1); -// CHECK: VarDecl{{.*}}TestIndent -// CHECK-NEXT: {{^}}`-BinaryOperator{{[^()]*$}} -// CHECK-NEXT: {{^}} |-IntegerLiteral{{.*0[^()]*$}} -// CHECK-NEXT: {{^}} `-ParenExpr{{.*0[^()]*$}} -// CHECK-NEXT: {{^}} `-IntegerLiteral{{.*0[^()]*$}} - -void TestDeclStmt() { - int x = 0; - int y, z; -} -// CHECK: FunctionDecl{{.*}}TestDeclStmt -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: DeclStmt -// CHECK-NEXT: VarDecl{{.*}}x -// CHECK-NEXT: IntegerLiteral -// CHECK-NEXT: DeclStmt -// CHECK-NEXT: VarDecl{{.*}}y -// CHECK-NEXT: VarDecl{{.*}}z - -int TestOpaqueValueExpr = 0 ?: 1; -// CHECK: VarDecl{{.*}}TestOpaqueValueExpr -// CHECK-NEXT: BinaryConditionalOperator -// CHECK-NEXT: IntegerLiteral -// CHECK-NEXT: OpaqueValueExpr -// CHECK-NEXT: IntegerLiteral -// CHECK-NEXT: OpaqueValueExpr
-// CHECK-NEXT: IntegerLiteral
-// CHECK-NEXT: IntegerLiteral
-
-void TestUnaryOperatorExpr(void) {
- char T1 = 1;
- int T2 = 1;
-
- T1++;
- T2++;
- // CHECK: UnaryOperator{{.*}}postfix '++' cannot overflow
- // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
- // CHECK-NOT: UnaryOperator{{.*}}postfix '++' cannot overflow
- // CHECK: DeclRefExpr{{.*}}'T2' 'int'
-
- -T1;
- -T2;
- // CHECK: UnaryOperator{{.*}}prefix '-' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
- // CHECK-NOT: UnaryOperator{{.*}}prefix '-' cannot overflow
- // CHECK: ImplicitCastExpr
- // CHECK: DeclRefExpr{{.*}}'T2' 'int'
-
- ~T1;
- ~T2;
- // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
- // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr{{.*}}'T2' 'int'
-}
diff --git a/test/Misc/ast-dump-stmt.cpp b/test/Misc/ast-dump-stmt.cpp deleted file mode 100644 index 55b9b5fa9531..000000000000 --- a/test/Misc/ast-dump-stmt.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// RUN: %clang_cc1 -fcxx-exceptions -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s - -namespace n { -void function() {} -int Variable; -} -using n::function; -using n::Variable; -void TestFunction() { - void (*f)() = &function; -// CHECK: DeclRefExpr{{.*}} (UsingShadow{{.*}}function - Variable = 4; -// CHECK: DeclRefExpr{{.*}} (UsingShadow{{.*}}Variable -} - -// CHECK: FunctionDecl {{.*}} TestCatch1 -void TestCatch1() { -// CHECK: CXXTryStmt -// CHECK-NEXT: CompoundStmt - try { - } -// CHECK-NEXT: CXXCatchStmt -// CHECK-NEXT: VarDecl {{.*}} x -// CHECK-NEXT: CompoundStmt - catch (int x) { - } -} - -// CHECK: FunctionDecl {{.*}} TestCatch2 -void TestCatch2() { -// CHECK: CXXTryStmt -// CHECK-NEXT: CompoundStmt - try { - } -// CHECK-NEXT: CXXCatchStmt -// CHECK-NEXT: NULL -// CHECK-NEXT: CompoundStmt - catch (...) { - } -} - -void TestAllocationExprs() { - int *p; - p = new int; - delete p; - p = new int[2]; - delete[] p; - p = ::new int; - ::delete p; -} -// CHECK: FunctionDecl {{.*}} TestAllocationExprs -// CHECK: CXXNewExpr {{.*}} 'int *' Function {{.*}} 'operator new' -// CHECK: CXXDeleteExpr {{.*}} 'void' Function {{.*}} 'operator delete' -// CHECK: CXXNewExpr {{.*}} 'int *' array Function {{.*}} 'operator new[]' -// CHECK: CXXDeleteExpr {{.*}} 'void' array Function {{.*}} 'operator delete[]' -// CHECK: CXXNewExpr {{.*}} 'int *' global Function {{.*}} 'operator new' -// CHECK: CXXDeleteExpr {{.*}} 'void' global Function {{.*}} 'operator delete' - -// Don't crash on dependent exprs that haven't been resolved yet. -template <typename T> -void TestDependentAllocationExpr() { - T *p = new T; - delete p; -} -// CHECK: FunctionTemplateDecl {{.*}} TestDependentAllocationExpr -// CHECK: CXXNewExpr {{.*'T \*'$}} -// CHECK: CXXDeleteExpr {{.*'void'$}} - -template <typename T> -class DependentScopeMemberExprWrapper { - T member; -}; - -template <typename T> -void TestDependentScopeMemberExpr() { - DependentScopeMemberExprWrapper<T> obj; - obj.member = T(); - (&obj)->member = T(); -} - -// CHECK: FunctionTemplateDecl {{.*}} TestDependentScopeMemberExpr -// CHECK: CXXDependentScopeMemberExpr {{.*}} lvalue .member -// CHECK: CXXDependentScopeMemberExpr {{.*}} lvalue ->member diff --git a/test/Misc/ast-dump-stmt.m b/test/Misc/ast-dump-stmt.m deleted file mode 100644 index 8c0ca897e511..000000000000 --- a/test/Misc/ast-dump-stmt.m +++ /dev/null @@ -1,36 +0,0 @@ -// RUN: %clang_cc1 -Wno-unused -fblocks -fobjc-exceptions -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s - -void TestBlockExpr(int x) { - ^{ x; }; -} -// CHECK: FunctionDecl{{.*}}TestBlockExpr -// CHECK: BlockExpr{{.*}} 'void (^)(void)' -// CHECK-NEXT: BlockDecl - -void TestExprWithCleanup(int x) { - ^{ x; }; -} -// CHECK: FunctionDecl{{.*}}TestExprWithCleanup -// CHECK: ExprWithCleanups -// CHECK-NEXT: cleanup Block -// CHECK-NEXT: BlockExpr - -@interface A -@end - -void TestObjCAtCatchStmt() { - @try { - } @catch(A *a) { - } @catch(...) { - } @finally { - } -} -// CHECK: FunctionDecl{{.*}}TestObjCAtCatchStmt -// CHECK: ObjCAtTryStmt -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: ObjCAtCatchStmt{{.*}} -// CHECK-NEXT: VarDecl{{.*}}a -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: ObjCAtCatchStmt{{.*}} catch all -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: ObjCAtFinallyStmt diff --git a/test/Misc/ast-dump-templates.cpp b/test/Misc/ast-dump-templates.cpp deleted file mode 100644 index 89feee75268a..000000000000 --- a/test/Misc/ast-dump-templates.cpp +++ /dev/null @@ -1,69 +0,0 @@ -// RUN: %clang_cc1 -std=c++1z -ast-print %s > %t -// RUN: FileCheck < %t %s -check-prefix=CHECK1 -// RUN: FileCheck < %t %s -check-prefix=CHECK2 -// RUN: %clang_cc1 -std=c++1z -ast-dump %s | FileCheck --check-prefix=DUMP %s - -template <int X, typename Y, int Z = 5> -struct foo { - int constant; - foo() {} - Y getSum() { return Y(X + Z); } -}; - -template <int A, typename B> -B bar() { - return B(A); -} - -void baz() { - int x = bar<5, int>(); - int y = foo<5, int>().getSum(); - double z = foo<2, double, 3>().getSum(); -} - -// Template definition - foo -// CHECK1: template <int X, typename Y, int Z = 5> struct foo { -// CHECK2: template <int X, typename Y, int Z = 5> struct foo { - -// Template instantiation - foo -// Since the order of instantiation may vary during runs, run FileCheck twice -// to make sure each instantiation is in the correct spot. -// CHECK1: template<> struct foo<5, int, 5> { -// CHECK2: template<> struct foo<2, double, 3> { - -// Template definition - bar -// CHECK1: template <int A, typename B> B bar() -// CHECK2: template <int A, typename B> B bar() - -// Template instantiation - bar -// CHECK1: template<> int bar<5, int>() -// CHECK2: template<> int bar<5, int>() - -// CHECK1-LABEL: template <typename ...T> struct A { -// CHECK1-NEXT: template <T ...x[3]> struct B { -template <typename ...T> struct A { - template <T ...x[3]> struct B {}; -}; - -// CHECK1-LABEL: template <typename ...T> void f(T ...[3]) { -// CHECK1-NEXT: A<T [3]...> a; -template <typename ...T> void f(T ...[3]) { - A<T [3]...> a; -} - -namespace test2 { -void func(int); -void func(float); -template<typename T> -void tmpl() { - func(T()); -} - -// DUMP: UnresolvedLookupExpr {{.*}} <col:3> '<overloaded function type>' lvalue (ADL) = 'func' -} - -namespace test3 { - template<typename T> struct A {}; - template<typename T> A(T) -> A<int>; - // CHECK1: template <typename T> A(T) -> A<int>; -} diff --git a/test/Misc/ast-dump-wchar.cpp b/test/Misc/ast-dump-wchar.cpp deleted file mode 100644 index 339295c133d1..000000000000 --- a/test/Misc/ast-dump-wchar.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// RUN: %clang_cc1 -std=c++11 -ast-dump %s -triple x86_64-linux-gnu | FileCheck %s - -char c8[] = u8"test\0\\\"\a\b\f\n\r\t\v\234"; -// CHECK: StringLiteral {{.*}} lvalue u8"test\000\\\"\a\b\f\n\r\t\v\234" - -char16_t c16[] = u"test\0\\\"\t\a\b\234\u1234"; -// CHECK: StringLiteral {{.*}} lvalue u"test\000\\\"\t\a\b\234\u1234" - -char32_t c32[] = U"test\0\\\"\t\a\b\234\u1234\U0010ffff"; // \ -// CHECK: StringLiteral {{.*}} lvalue U"test\000\\\"\t\a\b\234\u1234\U0010FFFF" - -wchar_t wc[] = L"test\0\\\"\t\a\b\234\u1234\xffffffff"; // \ -// CHECK: StringLiteral {{.*}} lvalue L"test\000\\\"\t\a\b\234\x1234\xFFFFFFFF" diff --git a/test/Misc/ast-print-bool.c b/test/Misc/ast-print-bool.c deleted file mode 100644 index 05519bcd4e54..000000000000 --- a/test/Misc/ast-print-bool.c +++ /dev/null @@ -1,44 +0,0 @@ -// RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_CBOOL \ -// RUN: | FileCheck %s --check-prefixes=BOOL-AS-CBOOL,CBOOL -// -// RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_CBOOL -DDIAG \ -// RUN: | FileCheck %s --check-prefixes=BOOL-AS-CBOOL,CBOOL -// -// RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_INT \ -// RUN: | FileCheck %s --check-prefixes=BOOL-AS-INT,CBOOL -// -// RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_INT -DDIAG \ -// RUN: | FileCheck %s --check-prefixes=BOOL-AS-INT,CBOOL -// -// RUN: %clang_cc1 -verify -ast-print %s -xc++ \ -// RUN: | FileCheck %s --check-prefixes=BOOL-AS-BOOL -// -// RUN: %clang_cc1 -verify -ast-print %s -xc++ -DDIAG \ -// RUN: | FileCheck %s --check-prefixes=BOOL-AS-BOOL - -#if DEF_BOOL_CBOOL -# define bool _Bool -#elif DEF_BOOL_INT -# define bool int -#endif - -// BOOL-AS-CBOOL: _Bool i; -// BOOL-AS-INT: int i; -// BOOL-AS-BOOL: bool i; -bool i; - -#ifndef __cplusplus -// CBOOL: _Bool j; -_Bool j; -#endif - -// Induce a diagnostic (and verify we actually managed to do so), which used to -// permanently alter the -ast-print printing policy for _Bool. How bool is -// defined by the preprocessor is examined only once per compilation, when the -// diagnostic is emitted, and it used to affect the entirety of -ast-print, so -// test only one definition of bool per compilation. -#if DIAG -void fn() { 1; } // expected-warning {{expression result unused}} -#else -// expected-no-diagnostics -#endif diff --git a/test/Misc/ast-print-char-literal.cpp b/test/Misc/ast-print-char-literal.cpp deleted file mode 100644 index 614b3ca9d73c..000000000000 --- a/test/Misc/ast-print-char-literal.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// RUN: %clang_cc1 -ast-print -std=c++1z %s -o - | FileCheck %s - -char c = u8'1'; -char d = '1'; -char e = U'1'; -char f = L'1'; -char g = u'1'; - -template <char c = u8'1'> -void h(); - -void i() { - h<u8'2'>(); -} - -char j = '\xFF'; - -// CHECK: char c = u8'1'; -// CHECK-NEXT: char d = '1'; -// CHECK-NEXT: char e = U'1'; -// CHECK-NEXT: char f = L'1'; -// CHECK-NEXT: char g = u'1'; - -// CHECK: template <char c = u8'1'> - -// CHECK: h<u8'2'>(); -// CHECK: char j = '\xff'; diff --git a/test/Misc/ast-print-enum-decl.c b/test/Misc/ast-print-enum-decl.c deleted file mode 100644 index fba931344285..000000000000 --- a/test/Misc/ast-print-enum-decl.c +++ /dev/null @@ -1,105 +0,0 @@ -// First check compiling and printing of this file. -// -// RUN: %clang_cc1 -verify -ast-print %s > %t.c -// RUN: FileCheck --check-prefixes=CHECK,PRINT %s --input-file %t.c -// -// Now check compiling and printing of the printed file. -// -// RUN: echo "// expected""-warning@* 6 {{'T' is deprecated}}" >> %t.c -// RUN: echo "// expected""-note@* 6 {{'T' has been explicitly marked deprecated here}}" >> %t.c -// -// RUN: %clang_cc1 -verify -ast-print %t.c \ -// RUN: | FileCheck --check-prefixes=CHECK,PRINT %s - -// END. - -// CHECK-LABEL: defFirst -void defFirst() { - // PRINT-NEXT: enum - // PRINT-DAG: __attribute__((aligned(16))) - // PRINT-DAG: __attribute__((deprecated(""))) - // PRINT-SAME: T { - // PRINT-NEXT: E0, - // PRINT-NEXT: E1 - // PRINT-NEXT: } *p0; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 2 {{'T' has been explicitly marked deprecated here}} - enum __attribute__((aligned(16))) __attribute__((deprecated(""))) T { - E0, E1 - } *p0; - - // PRINT-NEXT: enum T *p1; - enum T *p1; // expected-warning {{'T' is deprecated}} -} - -// CHECK-LABEL: defLast -void defLast() { - // PRINT-NEXT: enum __attribute__((aligned(16))) T *p0; - enum __attribute__((aligned(16))) T *p0; - - // PRINT-NEXT: enum __attribute__((deprecated(""))) T { - // PRINT-NEXT: E0, - // PRINT-NEXT: E1 - // PRINT-NEXT: } *p1; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 {{'T' has been explicitly marked deprecated here}} - enum __attribute__((deprecated(""))) T { E0, E1 } *p1; -} - -// CHECK-LABEL: defMiddle -void defMiddle() { - // PRINT-NEXT: enum __attribute__((deprecated(""))) T *p0; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 3 {{'T' has been explicitly marked deprecated here}} - enum __attribute__((deprecated(""))) T *p0; - - // PRINT-NEXT: enum __attribute__((aligned(16))) T { - // PRINT-NEXT: E0 - // PRINT-NEXT: E1 - // PRINT-NEXT: } *p1; - enum __attribute__((aligned(16))) T { E0, E1 } *p1; // expected-warning {{'T' is deprecated}} - - // PRINT-NEXT: enum T *p2; - enum T *p2; // expected-warning {{'T' is deprecated}} -} - -// CHECK-LABEL: declsOnly -void declsOnly() { - // FIXME: For some reason, attributes are ignored if they're not on the first - // declaration and not on the definition. - - // PRINT-NEXT: enum __attribute__((aligned)) T *p0; - enum __attribute__((aligned)) T *p0; - - // PRINT-NEXT: enum T *p1; - enum __attribute__((may_alias)) T *p1; - - // PRINT-NEXT: enum T *p2; - enum T *p2; - - // PRINT-NEXT: enum T *p3; - enum __attribute__((deprecated(""))) T *p3; - - // PRINT-NEXT: enum T *p4; - enum T *p4; -} - -// Check that tag decl groups stay together in decl contexts. - -// PRINT-LABEL: enum DeclGroupAtFileScope { -// PRINT-NEXT: DeclGroupAtFileScope0 -// PRINT-NEXT: } *DeclGroupAtFileScopePtr; -enum DeclGroupAtFileScope { DeclGroupAtFileScope0 } *DeclGroupAtFileScopePtr; - -// PRINT-LABEL: struct DeclGroupInMemberList -struct DeclGroupInMemberList { - // PRINT-NEXT: enum T1 { - // PRINT-NEXT: T10 - // PRINT-NEXT: } *p0; - enum T1 { T10 } *p0; - // PRINT-NEXT: enum T2 { - // PRINT-NEXT: T20 - // PRINT-NEXT: } *p1, *p2; - enum T2 { T20 } *p1, *p2; - // PRINT-NEXT: }; -}; diff --git a/test/Misc/ast-print-objectivec.m b/test/Misc/ast-print-objectivec.m deleted file mode 100644 index 05a0a5d4aa74..000000000000 --- a/test/Misc/ast-print-objectivec.m +++ /dev/null @@ -1,62 +0,0 @@ -// RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s - -@interface NSObject @end - -@protocol P -- (void)MethP __attribute__((availability(macosx,introduced=10.1.0,deprecated=10.2))); -@end - -@interface I : NSObject <P> -- (void)MethI __attribute__((availability(macosx,introduced=10.1.0,deprecated=10.2))); -@end - -@interface I(CAT) -- (void)MethCAT __attribute__((availability(macosx,introduced=10_1_0,deprecated=10_2))); -@end - -@implementation I -- (void)MethP __attribute__((availability(macosx,introduced=10.1.0,deprecated=10.2))) {} -- (void)MethI __attribute__((availability(macosx,introduced=10.1.0,deprecated=10.2))) {} - -- (void)methodWithArg:(int)x andAnotherOne:(int)y { } -@end - -// CHECK: @protocol P -// CHECK: - (void)MethP __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))); -// CHECK: @end - -// CHECK: @interface I : NSObject<P> -// CHECK: - (void)MethI __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))); -// CHECK: @end - -// CHECK: @interface I(CAT) -// CHECK: - (void)MethCAT __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))); -// CHECK: @end - -// CHECK: @implementation I -// CHECK: - (void)MethP __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))) { -// CHECK: } - -// CHECK: - (void)MethI __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))) { -// CHECK: } - -// CHECK: - (void)methodWithArg:(int)x andAnotherOne:(int)y { -// CHECK: } - -// CHECK: @end - -@class C1; -struct __attribute__((objc_bridge_related(C1,,))) S1; - -// CHECK: @class C1; -// CHECK: struct __attribute__((objc_bridge_related(C1, , ))) S1; - -@interface ImplicitPropertyWithSetterOnly - -- (void)setX:(int)x; - -@end - -void printImplicitPropertyWithSetterOnly(ImplicitPropertyWithSetterOnly *x) { - x.x = 313; // CHECK: x.x = 313; -} diff --git a/test/Misc/ast-print-out-of-line-func.cpp b/test/Misc/ast-print-out-of-line-func.cpp deleted file mode 100644 index 7d42f1f4037f..000000000000 --- a/test/Misc/ast-print-out-of-line-func.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// RUN: %clang_cc1 -ast-print -std=c++14 %s | FileCheck %s - -namespace ns { - -struct Wrapper { -class Inner { - Inner(); - Inner(int); - ~Inner(); - - void operator += (int); - - template<typename T> - void member(); - - static void staticMember(); - - operator int(); - - operator ns::Wrapper(); - // CHECK: operator ns::Wrapper() -}; -}; - -Wrapper::Inner::Inner() { } -// CHECK: Wrapper::Inner::Inner() - -void Wrapper::Inner::operator +=(int) { } -// CHECK: void Wrapper::Inner::operator+=(int) - -} - -ns::Wrapper::Inner::Inner(int) { } -// CHECK: ns::Wrapper::Inner::Inner(int) - -ns::Wrapper::Inner::~Inner() { } -// CHECK: ns::Wrapper::Inner::~Inner() - -template<typename T> -void ::ns::Wrapper::Inner::member() { } -// CHECK: template <typename T> void ::ns::Wrapper::Inner::member() - -ns::Wrapper::Inner::operator int() { return 0; } -// CHECK: ns::Wrapper::Inner::operator int() - -ns::Wrapper::Inner::operator ::ns::Wrapper() { return ns::Wrapper(); } -// CHECK: ns::Wrapper::Inner::operator ::ns::Wrapper() - -namespace ns { - -void Wrapper::Inner::staticMember() { } -// CHECK: void Wrapper::Inner::staticMember() - -} - -template<int x, typename T> -class TemplateRecord { - void function(); - template<typename U> void functionTemplate(T, U); -}; - -template<int x, typename T> -void TemplateRecord<x, T>::function() { } -// CHECK: template <int x, typename T> void TemplateRecord<x, T>::function() - -template<int x, typename T> -template<typename U> -void TemplateRecord<x, T>::functionTemplate(T, U) { } -// CHECK: template <int x, typename T> template <typename U> void TemplateRecord<x, T>::functionTemplate(T, U) - -template<> -class TemplateRecord<0, int> { - void function(); - template<typename U> void functionTemplate(int, U); -}; - -void TemplateRecord<0, int>::function() { } -// CHECK: void TemplateRecord<0, int>::function() - -template<typename U> -void TemplateRecord<0, int>::functionTemplate(int, U) { } -// CHECK: template <typename U> void TemplateRecord<0, int>::functionTemplate(int, U) - -template<typename T> -struct OuterTemplateRecord { - template<typename U> - struct Inner { - void function(); - }; -}; - -template<typename T> -template<typename U> -void OuterTemplateRecord<T>::Inner<U>::function() { } -// CHECK: template <typename T> template <typename U> void OuterTemplateRecord<T>::Inner<U>::function() diff --git a/test/Misc/ast-print-pragmas-xfail.cpp b/test/Misc/ast-print-pragmas-xfail.cpp deleted file mode 100644 index 69ba48d0de29..000000000000 --- a/test/Misc/ast-print-pragmas-xfail.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// RUN: %clang_cc1 %s -ast-print -o - | FileCheck %s - -// FIXME: Test fails because attribute order is reversed by ParsedAttributes. -// XFAIL: * - -void run1(int *List, int Length) { - int i = 0; -// CHECK: #pragma loop vectorize(4) -// CHECK-NEXT: #pragma loop interleave(8) -// CHECK-NEXT: #pragma loop vectorize(enable) -// CHECK-NEXT: #pragma loop interleave(enable) -#pragma loop vectorize(4) -#pragma loop interleave(8) -#pragma loop vectorize(enable) -#pragma loop interleave(enable) -// CHECK-NEXT: while (i < Length) - while (i < Length) { - List[i] = i; - i++; - } -} diff --git a/test/Misc/ast-print-pragmas.cpp b/test/Misc/ast-print-pragmas.cpp deleted file mode 100644 index f1a7b2479b6b..000000000000 --- a/test/Misc/ast-print-pragmas.cpp +++ /dev/null @@ -1,68 +0,0 @@ -// RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s -// RUN: %clang_cc1 -DMS_EXT -fsyntax-only -fms-extensions %s -triple x86_64-pc-win32 -ast-print | FileCheck %s --check-prefix=MS-EXT - -// FIXME: A bug in ParsedAttributes causes the order of the attributes to be -// reversed. The checks are consequently in the reverse order below. - -// CHECK: #pragma clang loop interleave_count(8){{$}} -// CHECK-NEXT: #pragma clang loop vectorize_width(4) - -void test(int *List, int Length) { - int i = 0; -#pragma clang loop vectorize_width(4) -#pragma clang loop interleave_count(8) -// CHECK-NEXT: while (i < Length) - while (i < Length) { - List[i] = i * 2; - i++; - } - -// CHECK: #pragma clang loop interleave(disable) -// CHECK-NEXT: #pragma clang loop vectorize(enable) -// CHECK-NEXT: #pragma clang loop distribute(disable) - -#pragma clang loop distribute(disable) -#pragma clang loop vectorize(enable) -#pragma clang loop interleave(disable) -// CHECK-NEXT: while (i - 1 < Length) - while (i - 1 < Length) { - List[i] = i * 2; - i++; - } - -// CHECK: #pragma clang loop interleave(enable) -// CHECK-NEXT: #pragma clang loop vectorize(disable) -// CHECK-NEXT: #pragma clang loop distribute(enable) - -#pragma clang loop distribute(enable) -#pragma clang loop vectorize(disable) -#pragma clang loop interleave(enable) -// CHECK-NEXT: while (i - 2 < Length) - while (i - 2 < Length) { - List[i] = i * 2; - i++; - } -} - -template <int V, int I> -void test_nontype_template_param(int *List, int Length) { -#pragma clang loop vectorize_width(V) interleave_count(I) - for (int i = 0; i < Length; i++) { - List[i] = i; - } -} - -// CHECK: #pragma clang loop interleave_count(I) -// CHECK: #pragma clang loop vectorize_width(V) - -void test_templates(int *List, int Length) { - test_nontype_template_param<2, 4>(List, Length); -} - -#ifdef MS_EXT -#pragma init_seg(compiler) -// MS-EXT: #pragma init_seg (.CRT$XCC){{$}} -// MS-EXT-NEXT: int x = 3 __declspec(thread); -int __declspec(thread) x = 3; -#endif //MS_EXT - diff --git a/test/Misc/ast-print-record-decl.c b/test/Misc/ast-print-record-decl.c deleted file mode 100644 index c27fdf42f337..000000000000 --- a/test/Misc/ast-print-record-decl.c +++ /dev/null @@ -1,291 +0,0 @@ -// Check struct: -// -// First check compiling and printing of this file. -// -// RUN: %clang -target x86_64-linux -Xclang -verify -S -emit-llvm \ -// RUN: -DKW=struct -DBASES= -o - %s \ -// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s -// -// RUN: %clang_cc1 -verify -ast-print -DKW=struct -DBASES= %s > %t.c -// RUN: FileCheck --check-prefixes=CHECK,PRINT,PRINT-C -DKW=struct -DBASES= \ -// RUN: %s --input-file %t.c -// -// Now check compiling and printing of the printed file. -// -// RUN: echo "// expected""-warning@* 10 {{'T' is deprecated}}" >> %t.c -// RUN: echo "// expected""-note@* 10 {{'T' has been explicitly marked deprecated here}}" >> %t.c -// -// RUN: %clang -target x86_64-linux -Xclang -verify -S -emit-llvm -o - %t.c \ -// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s -// -// RUN: %clang_cc1 -verify -ast-print %t.c \ -// RUN: | FileCheck --check-prefixes=CHECK,PRINT,PRINT-C -DKW=struct \ -// RUN: -DBASES= %s - -// Repeat for union: -// -// First check compiling and printing of this file. -// -// RUN: %clang -target x86_64-linux -Xclang -verify -S -emit-llvm \ -// RUN: -DKW=union -DBASES= -o - %s \ -// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s -// -// RUN: %clang_cc1 -verify -ast-print -DKW=union -DBASES= %s > %t.c -// RUN: FileCheck --check-prefixes=CHECK,PRINT,PRINT-C -DKW=union -DBASES= \ -// RUN: %s --input-file %t.c -// -// Now check compiling and printing of the printed file. -// -// RUN: echo "// expected""-warning@* 10 {{'T' is deprecated}}" >> %t.c -// RUN: echo "// expected""-note@* 10 {{'T' has been explicitly marked deprecated here}}" >> %t.c -// -// RUN: %clang -target x86_64-linux -Xclang -verify -S -emit-llvm -o - %t.c \ -// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s -// -// RUN: %clang_cc1 -verify -ast-print %t.c \ -// RUN: | FileCheck --check-prefixes=CHECK,PRINT,PRINT-C -DKW=union \ -// RUN: -DBASES= %s - -// Repeat for C++ (BASES helps ensure we're printing as C++ not as C): -// -// First check compiling and printing of this file. -// -// RUN: %clang -target x86_64-linux -Xclang -verify -S -emit-llvm \ -// RUN: -DKW=struct -DBASES=' : B' -o - -xc++ %s \ -// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s -// -// RUN: %clang_cc1 -verify -ast-print -DKW=struct -DBASES=' : B' -xc++ %s \ -// RUN: > %t.cpp -// RUN: FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \ -// RUN: -DBASES=' : B' %s --input-file %t.cpp -// -// Now check compiling and printing of the printed file. -// -// RUN: echo "// expected""-warning@* 10 {{'T' is deprecated}}" > %t.diags -// RUN: echo "// expected""-note@* 10 {{'T' has been explicitly marked deprecated here}}" >> %t.diags -// RUN: cat %t.diags >> %t.cpp -// -// RUN: %clang -target x86_64-linux -Xclang -verify -S -emit-llvm -o - %t.cpp \ -// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s -// -// RUN: %clang_cc1 -verify -ast-print %t.cpp \ -// RUN: | FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \ -// RUN: -DBASES=' : B' %s -// -// Make sure implicit attributes aren't printed. See comments in inMemberPtr -// for details. -// -// RUN: %clang_cc1 -triple i686-pc-win32 -verify -ast-print -DKW=struct \ -// RUN: -DBASES=' : B' -xc++ %s > %t.cpp -// RUN: FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \ -// RUN: -DBASES=' : B' %s --input-file %t.cpp -// -// RUN: cat %t.diags >> %t.cpp -// RUN: %clang_cc1 -triple i686-pc-win32 -verify -ast-print %t.cpp \ -// RUN: | FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \ -// RUN: -DBASES=' : B' %s - -// END. - -#ifndef KW -# error KW undefined -# define KW struct // help syntax checkers -#endif - -#ifndef BASES -# error BASES undefined -# define BASES // help syntax checkers -#endif - -struct B {}; - -// CHECK-LABEL: defFirst -void defFirst() { - // PRINT-NEXT: [[KW]] - // PRINT-DAG: __attribute__((aligned(16))) - // PRINT-DAG: __attribute__((deprecated(""))) - // PRINT-NOT: __attribute__ - // PRINT-SAME: T[[BASES]] { - // PRINT-NEXT: int i; - // PRINT-NEXT: } *p0; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 2 {{'T' has been explicitly marked deprecated here}} - KW __attribute__((aligned(16))) __attribute__((deprecated(""))) T BASES { - int i; - } *p0; - - // PRINT-NEXT: [[KW]] T *p1; - KW T *p1; // expected-warning {{'T' is deprecated}} - - // LLVM: store i64 16 - long s0 = sizeof *p0; - // LLVM-NEXT: store i64 16 - long s1 = sizeof *p1; -} - -// CHECK-LABEL: defLast -void defLast() { - // PRINT-NEXT: [[KW]] __attribute__((aligned(16))) T *p0; - KW __attribute__((aligned(16))) T *p0; - - // PRINT-NEXT: [[KW]] __attribute__((deprecated(""))) T[[BASES]] { - // PRINT-NEXT: int i; - // PRINT-NEXT: } *p1; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 {{'T' has been explicitly marked deprecated here}} - KW __attribute__((deprecated(""))) T BASES { int i; } *p1; - - // LLVM: store i64 16 - long s0 = sizeof *p0; - // LLVM-NEXT: store i64 16 - long s1 = sizeof *p1; -} - -// CHECK-LABEL: defMiddle -void defMiddle() { - // PRINT-NEXT: [[KW]] __attribute__((deprecated(""))) T *p0; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 3 {{'T' has been explicitly marked deprecated here}} - KW __attribute__((deprecated(""))) T *p0; - - // PRINT-NEXT: [[KW]] __attribute__((aligned(16))) T[[BASES]] { - // PRINT-NEXT: int i; - // PRINT-NEXT: } *p1; - KW __attribute__((aligned(16))) T BASES { int i; } *p1; // expected-warning {{'T' is deprecated}} - - // PRINT-NEXT: [[KW]] T *p2; - KW T *p2; // expected-warning {{'T' is deprecated}} - - // LLVM: store i64 16 - long s0 = sizeof *p0; - // LLVM-NEXT: store i64 16 - long s1 = sizeof *p1; - // LLVM-NEXT: store i64 16 - long s2 = sizeof *p2; -} - -// CHECK-LABEL: defSelfRef -void defSelfRef() { - // PRINT-NEXT: [[KW]] __attribute__((deprecated(""))) T *p0; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 2 {{'T' has been explicitly marked deprecated here}} - KW __attribute__((deprecated(""))) T *p0; - - // PRINT-NEXT: [[KW]] __attribute__((aligned(64))) T[[BASES]] { - // PRINT-NEXT: int i; - // PRINT-NEXT: [[KW]] T *p2; - // PRINT-NEXT: [[KW]] __attribute__((may_alias)) T *p3; - // PRINT-NEXT: [[KW]] T *p4; - // PRINT-NEXT: } *p1; - KW __attribute__((aligned(64))) T BASES { // expected-warning {{'T' is deprecated}} - int i; - KW T *p2; - // FIXME: For C++, T at p3 loses aligned and deprecated, perhaps because - // that RecordDecl isn't in the same redecl list. Perhaps the redecl lists - // are split here but not in C due to the different scoping rules in C++ - // classes. - KW __attribute__((may_alias)) T *p3; - KW T *p4; - } *p1; - - // LLVM: store i64 64 - long s0 = sizeof *p0; - // LLVM-NEXT: store i64 64 - long s1 = sizeof *p1; - // LLVM-NEXT: store i64 64 - long s2 = sizeof *p0->p2; - // LLVM-NEXT: store i64 64 - long s3 = sizeof *p1->p3; - // LLVM-NEXT: store i64 64 - long s4 = sizeof *p1->p4->p2; -} - -// CHECK-LABEL: declsOnly -void declsOnly() { - // PRINT-NEXT: [[KW]] T *p0; - KW T *p0; - - // PRINT-NEXT: [[KW]] __attribute__((may_alias)) T *p1; - KW __attribute__((may_alias)) T *p1; - - // PRINT-NEXT: [[KW]] T *p2; - KW T *p2; - - // PRINT-NEXT: [[KW]] __attribute__((deprecated(""))) T *p3; - // expected-warning@+2 {{'T' is deprecated}} - // expected-note@+1 2 {{'T' has been explicitly marked deprecated here}} - KW __attribute__((deprecated(""))) T *p3; - - // PRINT-NEXT: [[KW]] T *p4; - KW T *p4; // expected-warning {{'T' is deprecated}} -} - -// Make sure expanded printing of tag types is turned back off in other parts -// of a tag declaration. The base class list is checked above. - -// CHECK-LABEL: inMembers -void inMembers() { - // PRINT-NEXT: [[KW]] T1 { - // PRINT-NEXT: int i; - // PRINT-NEXT: }; - KW T1 { int i; }; - // PRINT-NEXT: [[KW]] T2 { - // PRINT-NEXT: [[KW]] T1 i; - // PRINT-NEXT: }; - KW T2 { KW T1 i; }; -} - -// CHECK-LABEL: inInit -void inInit() { - // PRINT-NEXT: [[KW]] T1 { - // PRINT-NEXT: int i; - // PRINT-NEXT: }; - KW T1 { int i; }; - // PRINT-NEXT: [[KW]] T2 { - // PRINT-NEXT: long i; - // PRINT-NEXT: } t2 = {sizeof([[KW]] T1)}; - KW T2 { long i; } t2 = {sizeof(KW T1)}; -} - -#ifdef __cplusplus -// PRINT-CXX-LABEL: inMemberPtr -void inMemberPtr() { - // Under windows, the implicit attribute __single_inheritance used to print - // between KW and T1 here, but that wasn't faithful to the original source. - // - // PRINT-CXX-NEXT: [[KW]] T1 { - // PRINT-CXX-NEXT: int i; - // PRINT-CXX-NEXT: }; - KW T1 { int i; }; - // PRINT-CXX-NEXT: [[KW]] T2 { - // PRINT-CXX-NEXT: } T1::*p; - KW T2 {} T1::*p; -} -#endif - -// Check that tag decl groups stay together in decl contexts. - -// PRINT-LABEL: DeclGroupAtFileScope { -// PRINT-NEXT: int i; -// PRINT-NEXT: } *DeclGroupAtFileScopePtr; -KW DeclGroupAtFileScope { int i; } *DeclGroupAtFileScopePtr; - -// PRINT-LABEL: DeclGroupInMemberList { -KW DeclGroupInMemberList { - // PRINT-NEXT: struct T1 { - // PRINT-NEXT: int i; - // PRINT-NEXT: } t1; - struct T1 { int i; } t1; - // PRINT-NEXT: union T2 { - // PRINT-NEXT: int i; - // PRINT-NEXT: } *t20, t21[2]; - union T2 { int i; } *t20, t21[2]; - // PRINT-NEXT: enum T3 { - // PRINT-NEXT: T30 - // PRINT-NEXT: } t30; - enum T3 { T30 } t30; - // PRINT-NEXT: }; -}; - -// A tag decl group in the tag decl's own member list is exercised in -// defSelfRef above. diff --git a/test/Misc/attr-print-emit.cpp b/test/Misc/attr-print-emit.cpp deleted file mode 100644 index cc7413baf10e..000000000000 --- a/test/Misc/attr-print-emit.cpp +++ /dev/null @@ -1,69 +0,0 @@ -// RUN: %clang_cc1 %s -ast-print | FileCheck %s -// RUN: %clang -emit-ast -o %t.ast %s -// RUN: %clang_cc1 %t.ast -ast-print | FileCheck %s - -// CHECK: void xla(int a) __attribute__((xray_log_args(1))); -void xla(int a) __attribute__((xray_log_args(1))); - -// CHECK: void *as2(int, int) __attribute__((alloc_size(1, 2))); -void *as2(int, int) __attribute__((alloc_size(1, 2))); -// CHECK: void *as1(void *, int) __attribute__((alloc_size(2))); -void *as1(void *, int) __attribute__((alloc_size(2))); - -// CHECK: void fmt(int, const char *, ...) __attribute__((format(printf, 2, 3))); -void fmt(int, const char *, ...) __attribute__((format(printf, 2, 3))); - -// CHECK: char *fmta(int, const char *) __attribute__((format_arg(2))); -char *fmta(int, const char *) __attribute__((format_arg(2))); - -// CHECK: void nn(int *, int *) __attribute__((nonnull(1, 2))); -void nn(int *, int *) __attribute__((nonnull(1, 2))); - -// CHECK: int *aa(int i) __attribute__((alloc_align(1))); -int *aa(int i) __attribute__((alloc_align(1))); - -// CHECK: void ownt(int *, int *) __attribute__((ownership_takes(foo, 1, 2))); -void ownt(int *, int *) __attribute__((ownership_takes(foo, 1, 2))); -// CHECK: void ownh(int *, int *) __attribute__((ownership_holds(foo, 1, 2))); -void ownh(int *, int *) __attribute__((ownership_holds(foo, 1, 2))); -// CHECK: void ownr(int) __attribute__((ownership_returns(foo, 1))); -void ownr(int) __attribute__((ownership_returns(foo, 1))); - -// CHECK: void awtt(int, int, ...) __attribute__((argument_with_type_tag(foo, 3, 2))); -void awtt(int, int, ...) __attribute__((argument_with_type_tag(foo, 3, 2))); -// CHECK: void pwtt(void *, int) __attribute__((pointer_with_type_tag(foo, 1, 2))); -void pwtt(void *, int) __attribute__((pointer_with_type_tag(foo, 1, 2))); - -class C { - // CHECK: void xla(int a) __attribute__((xray_log_args(2))); - void xla(int a) __attribute__((xray_log_args(2))); - - // CHECK: void *as2(int, int) __attribute__((alloc_size(2, 3))); - void *as2(int, int) __attribute__((alloc_size(2, 3))); - // CHECK: void *as1(void *, int) __attribute__((alloc_size(3))); - void *as1(void *, int) __attribute__((alloc_size(3))); - - // CHECK: void fmt(int, const char *, ...) __attribute__((format(printf, 3, 4))); - void fmt(int, const char *, ...) __attribute__((format(printf, 3, 4))); - - // CHECK: char *fmta(int, const char *) __attribute__((format_arg(3))); - char *fmta(int, const char *) __attribute__((format_arg(3))); - - // CHECK: void nn(int *, int *) __attribute__((nonnull(2, 3))); - void nn(int *, int *) __attribute__((nonnull(2, 3))); - - // CHECK: int *aa(int i) __attribute__((alloc_align(2))); - int *aa(int i) __attribute__((alloc_align(2))); - - // CHECK: void ownt(int *, int *) __attribute__((ownership_takes(foo, 2, 3))); - void ownt(int *, int *) __attribute__((ownership_takes(foo, 2, 3))); - // CHECK: void ownh(int *, int *) __attribute__((ownership_holds(foo, 2, 3))); - void ownh(int *, int *) __attribute__((ownership_holds(foo, 2, 3))); - // CHECK: void ownr(int) __attribute__((ownership_returns(foo, 2))); - void ownr(int) __attribute__((ownership_returns(foo, 2))); - - // CHECK: void awtt(int, int, ...) __attribute__((argument_with_type_tag(foo, 4, 3))); - void awtt(int, int, ...) __attribute__((argument_with_type_tag(foo, 4, 3))); - // CHECK: void pwtt(void *, int) __attribute__((pointer_with_type_tag(foo, 2, 3))); - void pwtt(void *, int) __attribute__((pointer_with_type_tag(foo, 2, 3))); -}; diff --git a/test/Misc/backend-optimization-failure-nodbg.cpp b/test/Misc/backend-optimization-failure-nodbg.cpp index aba37de231af..02b0889d0208 100644 --- a/test/Misc/backend-optimization-failure-nodbg.cpp +++ b/test/Misc/backend-optimization-failure-nodbg.cpp @@ -4,7 +4,7 @@ // Test verifies optimization failures generated by the backend are handled // correctly by clang. LLVM tests verify all of the failure conditions. -void test_switch(int *A, int *B, int Length, int J) { /* expected-warning {{loop not vectorized: failed explicitly specified loop vectorization}} */ +void test_switch(int *A, int *B, int Length, int J) { /* expected-warning {{loop not vectorized: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering}} */ #pragma clang loop vectorize(enable) unroll(disable) for (int i = 0; i < Length; i++) { switch (A[i]) { diff --git a/test/Misc/backend-optimization-failure.cpp b/test/Misc/backend-optimization-failure.cpp index 1657c0cb91d5..18b0ccb74e8c 100644 --- a/test/Misc/backend-optimization-failure.cpp +++ b/test/Misc/backend-optimization-failure.cpp @@ -7,7 +7,7 @@ void test_switch(int *A, int *B, int Length,int J) { #pragma clang loop vectorize(enable) unroll(disable) for (int i = 0; i < Length; i++) { -/* expected-warning@-1 {{loop not vectorized: failed explicitly specified loop vectorization}} */ switch (A[i]) { +/* expected-warning@-1 {{loop not vectorized: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering}} */ switch (A[i]) { case 0: B[i] = 1; break; diff --git a/test/Misc/pragma-attribute-cxx-subject-match-rules.cpp b/test/Misc/pragma-attribute-cxx-subject-match-rules.cpp deleted file mode 100644 index 18dfb43a384d..000000000000 --- a/test/Misc/pragma-attribute-cxx-subject-match-rules.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=namespace" %s | FileCheck --check-prefix=CHECK-NAMESPACE %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=type_alias" %s | FileCheck --check-prefix=CHECK-TYPE_ALIAS %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=enum" %s | FileCheck --check-prefix=CHECK-ENUM %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=enum_constant" %s | FileCheck --check-prefix=CHECK-ENUM_CONSTANT %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=record" %s | FileCheck --check-prefix=CHECK-RECORD %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=record(unless(is_union))" %s | FileCheck --check-prefix=CHECK-RECORD_UNLESS_IS_UNION %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=field" %s | FileCheck --check-prefix=CHECK-FIELD %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=function" %s | FileCheck --check-prefix=CHECK-FUNCTION %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=hasType(functionType)" %s | FileCheck --check-prefix=CHECK-HAS_TYPE_FUNCTION_TYPE %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=function(is_member)" %s | FileCheck --check-prefix=CHECK-FUNCTION_IS_MEMBER %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=variable" %s | FileCheck --check-prefix=CHECK-VARIABLE %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=variable(is_global)" %s | FileCheck --check-prefix=CHECK-VARIABLE_IS_GLOBAL %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=variable(is_parameter)" %s | FileCheck --check-prefix=CHECK-VARIABLE_IS_PARAMETER %s -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=variable(unless(is_parameter))" %s | FileCheck --check-prefix=CHECK-VARIABLE_UNLESS_IS_PARAMETER %s - -#pragma clang attribute push (__attribute__((annotate("test"))), apply_to = any(SUBJECT)) - -namespace testNamespace { -// CHECK-NAMESPACE: NamespaceDecl{{.*}} testNamespace -// CHECK-NAMESPACE-NEXT: AnnotateAttr{{.*}} "test" - -typedef int testTypedef; -// CHECK-TYPE_ALIAS: TypedefDecl{{.*}} testTypedef -// CHECK-TYPE_ALIAS-NEXT: BuiltinType -// CHECK-TYPE_ALIAS-NEXT: AnnotateAttr{{.*}} "test" - -using testTypeAlias = double; -// CHECK-TYPE_ALIAS: TypeAliasDecl{{.*}} testTypeAlias -// CHECK-TYPE_ALIAS-NEXT: BuiltinType -// CHECK-TYPE_ALIAS-NEXT: AnnotateAttr{{.*}} "test" - -enum testEnum { - testEnumCase1, - testEnumCase2 -}; -// CHECK-ENUM: EnumDecl{{.*}} testEnum -// CHECK-ENUM-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-ENUM_CONSTANT: EnumConstantDecl{{.*}} testEnumCase1 -// CHECK-ENUM_CONSTANT-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-ENUM_CONSTANT: EnumConstantDecl{{.*}} testEnumCase2 -// CHECK-ENUM_CONSTANT-NEXT: AnnotateAttr{{.*}} "test" - -struct testStructRecord { - int testStructRecordField; -}; -// CHECK-RECORD: CXXRecordDecl{{.*}} testStructRecord -// CHECK-RECORD: AnnotateAttr{{.*}} "test" -// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl{{.*}} testStructRecord -// CHECK-RECORD_UNLESS_IS_UNION: AnnotateAttr{{.*}} "test" -// CHECK-FIELD: FieldDecl{{.*}} testStructRecordField -// CHECK-FIELD-NEXT: AnnotateAttr{{.*}} "test" - -class testClassRecord { - int testClassRecordField; -}; -// CHECK-RECORD: CXXRecordDecl{{.*}} testClassRecord -// CHECK-RECORD: AnnotateAttr{{.*}} "test" -// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl{{.*}} testClassRecord -// CHECK-RECORD_UNLESS_IS_UNION: AnnotateAttr{{.*}} "test" -// CHECK-FIELD: FieldDecl{{.*}} testClassRecordField -// CHECK-FIELD-NEXT: AnnotateAttr{{.*}} "test" - -union testUnionRecord { - int testUnionRecordField; -}; -// CHECK-RECORD: CXXRecordDecl{{.*}} testUnionRecord -// CHECK-RECORD: AnnotateAttr{{.*}} "test" -// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl{{.*}} testUnionRecord -// CHECK-RECORD_UNLESS_IS_UNION-NOT: AnnotateAttr{{.*}} "test" -// CHECK-FIELD: FieldDecl{{.*}} testUnionRecordField -// CHECK-FIELD-NEXT: AnnotateAttr{{.*}} "test" - -// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl -void testFunctionDecl(); -// CHECK-FUNCTION: FunctionDecl{{.*}} testFunctionDecl -// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE: FunctionDecl{{.*}} testFunctionDecl -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test" - -void testFunctionDecl() { } -// CHECK-FUNCTION: FunctionDecl{{.*}} testFunctionDecl -// CHECK-FUNCTION-NEXT: CompoundStmt -// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE: FunctionDecl{{.*}} testFunctionDecl -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: CompoundStmt -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test" - -void (*testFunctionVar)(); -// CHECK-HAS_TYPE_FUNCTION_TYPE: VarDecl{{.*}} testFunctionVar -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test" -// 'function' should not apply to variables with a function type! -// CHECK-FUNCTION: VarDecl{{.*}} testFunctionVar -// CHECK-FUNCTION-NOT: AnnotateAttr{{.*}} "test" - -class testMethods { - testMethods(); - void testMethod(); -}; -void testMethods::testMethod() { } -void testFunctionNotMethod(); -// CHECK-FUNCTION-LABEL: CXXConstructorDecl{{.*}} testMethods -// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-FUNCTION_IS_MEMBER: CXXConstructorDecl{{.*}} testMethods -// CHECK-FUNCTION_IS_MEMBER-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE: CXXConstructorDecl{{.*}} testMethods -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-FUNCTION: CXXMethodDecl{{.*}} testMethod -// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-FUNCTION_IS_MEMBER: CXXMethodDecl{{.*}} testMethod -// CHECK-FUNCTION_IS_MEMBER-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE: CXXMethodDecl{{.*}} testMethod -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-FUNCTION: CXXMethodDecl{{.*}} testMethod -// CHECK-FUNCTION-NEXT: CompoundStmt -// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-FUNCTION_IS_MEMBER: CXXMethodDecl{{.*}} testMethod -// CHECK-FUNCTION_IS_MEMBER-NEXT: CompoundStmt -// CHECK-CXX_METHOD-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE: CXXMethodDecl{{.*}} testMethod -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: CompoundStmt -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-FUNCTION_IS_MEMBER: FunctionDecl{{.*}} testFunctionNotMethod -// CHECK-FUNCTION_IS_MEMBER-NOT: AnnotateAttr{{.*}} "test" - -int testVariable; -// CHECK-VARIABLE: VarDecl{{.*}} testVariable -// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testVariable -// CHECK-VARIABLE_IS_GLOBAL-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testVariable -// CHECK-VARIABLE_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testVariable -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test" -void testVarFunction(int testParam) { -// CHECK-VARIABLE: VarDecl{{.*}} testParam -// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testParam -// CHECK-VARIABLE_IS_GLOBAL-NOT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testParam -// CHECK-VARIABLE_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testParam -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test" - - int testLocalVariable; -// CHECK-VARIABLE: VarDecl{{.*}} testLocalVariable -// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testLocalVariable -// CHECK-VARIABLE_IS_GLOBAL-NOT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testLocalVariable -// CHECK-VARIABLE_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testLocalVariable -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test" -} -class testVarClass { - static int testStaticVar; -}; -// CHECK-VARIABLE: VarDecl{{.*}} testStaticVar -// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testStaticVar -// CHECK-VARIABLE_IS_GLOBAL-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testStaticVar -// CHECK-VARIABLE_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test" -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testStaticVar -// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test" - - -} - -#pragma clang attribute pop diff --git a/test/Misc/pragma-attribute-objc-subject-match-rules.m b/test/Misc/pragma-attribute-objc-subject-match-rules.m deleted file mode 100644 index 09ab5e1f33a0..000000000000 --- a/test/Misc/pragma-attribute-objc-subject-match-rules.m +++ /dev/null @@ -1,113 +0,0 @@ -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump "-DSUBJECT=objc_interface" %s | FileCheck --check-prefix=CHECK-OBJC_INTERFACE %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=objc_protocol" %s | FileCheck --check-prefix=CHECK-OBJC_PROTOCOL %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump "-DSUBJECT=objc_category" %s | FileCheck --check-prefix=CHECK-OBJC_CATEGORY %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=objc_method" %s | FileCheck --check-prefix=CHECK-OBJC_METHOD %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=objc_method(is_instance)" %s | FileCheck --check-prefix=CHECK-OBJC_METHOD_IS_INSTANCE %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=field" %s | FileCheck --check-prefix=CHECK-FIELD %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=objc_property" %s | FileCheck --check-prefix=CHECK-OBJC_PROPERTY %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=block" %s | FileCheck --check-prefix=CHECK-BLOCK %s -// RUN: %clang_cc1 -fblocks -fobjc-arc -Wno-objc-root-class -fsyntax-only -ast-dump -ast-dump-filter test "-DSUBJECT=hasType(functionType)" %s | FileCheck --check-prefix=CHECK-HAS_TYPE_FUNCTION_TYPE %s - -#pragma clang attribute push (__attribute__((annotate("test"))), apply_to = any(SUBJECT)) - -@interface testInterface -@end -// CHECK-OBJC_INTERFACE: ObjCInterfaceDecl{{.*}} testInterface -// CHECK-OBJC_INTERFACE-NEXT: AnnotateAttr{{.*}} "test" - -@interface testInterface () -@end -// CHECK-OBJC_INTERFACE: ObjCCategoryDecl -// CHECK-OBJC_INTERFACE-NOT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_CATEGORY: ObjCCategoryDecl -// CHECK-OBJC_CATEGORY-NEXT: ObjCInterface -// CHECK-OBJC_CATEGORY-NEXT: AnnotateAttr{{.*}} "test" - -@interface testInterface (testCategory) -@end -// CHECK-OBJC_INTERFACE: ObjCCategoryDecl{{.*}} testCategory -// CHECK-OBJC_INTERFACE-NOT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_CATEGORY: ObjCCategoryDecl{{.*}} testCategory -// CHECK-OBJC_CATEGORY-NEXT: ObjCInterface -// CHECK-OBJC_CATEGORY-NEXT: AnnotateAttr{{.*}} "test" - -// CHECK-OBJC_INTERFACE-LABEL: ObjCProtocolDecl -@protocol testProtocol -@end -// CHECK-OBJC_PROTOCOL: ObjCProtocolDecl{{.*}} testProtocol -// CHECK-OBJC_PROTOCOL-NEXT: AnnotateAttr{{.*}} "test" - -@interface methodContainer -- (void) testInstanceMethod; -+ (void) testClassMethod; -@end -// CHECK-OBJC_METHOD: ObjCMethodDecl{{.*}} testInstanceMethod -// CHECK-OBJC_METHOD-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_METHOD: ObjCMethodDecl{{.*}} testClassMethod -// CHECK-OBJC_METHOD-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_METHOD_IS_INSTANCE: ObjCMethodDecl{{.*}} testInstanceMethod -// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_METHOD_IS_INSTANCE-LABEL: ObjCMethodDecl{{.*}} testClassMethod -// CHECK-OBJC_METHOD_IS_INSTANCE-NOT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE-LABEL: ObjCMethodDecl{{.*}} testInstanceMethod -// CHECK-HAS_TYPE_FUNCTION_TYPE-NOT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE-LABEL: ObjCMethodDecl{{.*}} testClassMethod -// CHECK-HAS_TYPE_FUNCTION_TYPE-NOT: AnnotateAttr{{.*}} "test" - -@implementation methodContainer -- (void) testInstanceMethod { } -+ (void) testClassMethod { } -@end -// CHECK-OBJC_METHOD: ObjCMethodDecl{{.*}} testInstanceMethod -// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl -// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl -// CHECK-OBJC_METHOD-NEXT: CompoundStmt -// CHECK-OBJC_METHOD-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_METHOD: ObjCMethodDecl{{.*}} testClassMethod -// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl -// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl -// CHECK-OBJC_METHOD-NEXT: CompoundStmt -// CHECK-OBJC_METHOD-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_METHOD_IS_INSTANCE-LABEL: ObjCMethodDecl{{.*}} testInstanceMethod -// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: ImplicitParamDecl -// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: ImplicitParamDecl -// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: CompoundStmt -// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-OBJC_METHOD_IS_INSTANCE: ObjCMethodDecl{{.*}} testClassMethod -// CHECK-OBJC_METHOD_IS_INSTANCE-NOT: AnnotateAttr{{.*}} "test" - -// CHECK-HAS_TYPE_FUNCTION_TYPE-LABEL: ObjCMethodDecl{{.*}} testInstanceMethod -// CHECK-HAS_TYPE_FUNCTION_TYPE-NOT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE-LABEL: ObjCMethodDecl{{.*}} testClassMethod -// CHECK-HAS_TYPE_FUNCTION_TYPE-NOT: AnnotateAttr{{.*}} "test" -@interface propertyContainer { - int testIvar; -// CHECK-FIELD: ObjCIvarDecl{{.*}} testIvar -// CHECK-FIELD-NEXT: AnnotateAttr{{.*}} "test" - -} -@property int testProperty; -// CHECK-OBJC_PROPERTY: ObjCPropertyDecl{{.*}} testProperty -// CHECK-OBJC_PROPERTY-NEXT: AnnotateAttr{{.*}} "test" - -@end - -void (^testBlockVar)(); -// CHECK-BLOCK: VarDecl{{.*}} testBlockVar -// CHECK-BLOCK-NOT: AnnotateAttr{{.*}} "test" - -void testBlock() { - (void)(^ { }); -} -// CHECK-BLOCK-LABEL: BlockDecl -// CHECK-BLOCK-NEXT: CompoundStmt -// CHECK-BLOCK-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE-LABEL: FunctionDecl{{.*}} testBlock -// CHECK-HAS_TYPE_FUNCTION_TYPE: BlockDecl -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: CompoundStmt -// The attribute applies to function, but not to block: -// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test" -// CHECK-HAS_TYPE_FUNCTION_TYPE-NOT: AnnotateAttr{{.*}} "test" - - -#pragma clang attribute pop diff --git a/test/Misc/pragma-attribute-supported-attributes-list.test b/test/Misc/pragma-attribute-supported-attributes-list.test index 4a3846be8d9b..9a6bcca1bd36 100644 --- a/test/Misc/pragma-attribute-supported-attributes-list.test +++ b/test/Misc/pragma-attribute-supported-attributes-list.test @@ -2,54 +2,107 @@ // The number of supported attributes should never go down! -// CHECK: #pragma clang attribute supports 72 attributes: +// CHECK: #pragma clang attribute supports the following attributes: // CHECK-NEXT: AMDGPUFlatWorkGroupSize (SubjectMatchRule_function) // CHECK-NEXT: AMDGPUNumSGPR (SubjectMatchRule_function) // CHECK-NEXT: AMDGPUNumVGPR (SubjectMatchRule_function) // CHECK-NEXT: AMDGPUWavesPerEU (SubjectMatchRule_function) // CHECK-NEXT: AVRSignal (SubjectMatchRule_function) // CHECK-NEXT: AbiTag (SubjectMatchRule_record_not_is_union, SubjectMatchRule_variable, SubjectMatchRule_function, SubjectMatchRule_namespace) +// CHECK-NEXT: Alias (SubjectMatchRule_function, SubjectMatchRule_variable_is_global) // CHECK-NEXT: AlignValue (SubjectMatchRule_variable, SubjectMatchRule_type_alias) // CHECK-NEXT: AllocSize (SubjectMatchRule_function) +// CHECK-NEXT: AlwaysDestroy (SubjectMatchRule_variable) +// CHECK-NEXT: AlwaysInline (SubjectMatchRule_function) // CHECK-NEXT: Annotate () // CHECK-NEXT: AnyX86NoCfCheck (SubjectMatchRule_hasType_functionType) +// CHECK-NEXT: ArcWeakrefUnavailable (SubjectMatchRule_objc_interface) // CHECK-NEXT: AssumeAligned (SubjectMatchRule_objc_method, SubjectMatchRule_function) // CHECK-NEXT: Availability ((SubjectMatchRule_record, SubjectMatchRule_enum, SubjectMatchRule_enum_constant, SubjectMatchRule_field, SubjectMatchRule_function, SubjectMatchRule_namespace, SubjectMatchRule_objc_category, SubjectMatchRule_objc_interface, SubjectMatchRule_objc_method, SubjectMatchRule_objc_property, SubjectMatchRule_objc_protocol, SubjectMatchRule_record, SubjectMatchRule_type_alias, SubjectMatchRule_variable)) +// CHECK-NEXT: CFAuditedTransfer (SubjectMatchRule_function) +// CHECK-NEXT: CFConsumed (SubjectMatchRule_variable_is_parameter) +// CHECK-NEXT: CFUnknownTransfer (SubjectMatchRule_function) // CHECK-NEXT: CPUDispatch (SubjectMatchRule_function) // CHECK-NEXT: CPUSpecific (SubjectMatchRule_function) +// CHECK-NEXT: CUDAConstant (SubjectMatchRule_variable) +// CHECK-NEXT: CUDADevice (SubjectMatchRule_function, SubjectMatchRule_variable) +// CHECK-NEXT: CUDAGlobal (SubjectMatchRule_function) +// CHECK-NEXT: CUDAHost (SubjectMatchRule_function) +// CHECK-NEXT: CUDALaunchBounds (SubjectMatchRule_objc_method, SubjectMatchRule_hasType_functionType) +// CHECK-NEXT: CUDAShared (SubjectMatchRule_variable) // CHECK-NEXT: CXX11NoReturn (SubjectMatchRule_function) // CHECK-NEXT: CallableWhen (SubjectMatchRule_function_is_member) +// CHECK-NEXT: Capability (SubjectMatchRule_record, SubjectMatchRule_type_alias) // CHECK-NEXT: CarriesDependency (SubjectMatchRule_variable_is_parameter, SubjectMatchRule_objc_method, SubjectMatchRule_function) +// CHECK-NEXT: Cold (SubjectMatchRule_function) +// CHECK-NEXT: Common (SubjectMatchRule_variable) +// CHECK-NEXT: Constructor (SubjectMatchRule_function) // CHECK-NEXT: Consumable (SubjectMatchRule_record) +// CHECK-NEXT: ConsumableAutoCast (SubjectMatchRule_record) +// CHECK-NEXT: ConsumableSetOnRead (SubjectMatchRule_record) // CHECK-NEXT: Convergent (SubjectMatchRule_function) // CHECK-NEXT: DLLExport (SubjectMatchRule_function, SubjectMatchRule_variable, SubjectMatchRule_record, SubjectMatchRule_objc_interface) // CHECK-NEXT: DLLImport (SubjectMatchRule_function, SubjectMatchRule_variable, SubjectMatchRule_record, SubjectMatchRule_objc_interface) +// CHECK-NEXT: Destructor (SubjectMatchRule_function) // CHECK-NEXT: DisableTailCalls (SubjectMatchRule_function, SubjectMatchRule_objc_method) // CHECK-NEXT: EnableIf (SubjectMatchRule_function) // CHECK-NEXT: EnumExtensibility (SubjectMatchRule_enum) +// CHECK-NEXT: ExcludeFromExplicitInstantiation (SubjectMatchRule_variable, SubjectMatchRule_function, SubjectMatchRule_record) // CHECK-NEXT: ExternalSourceSymbol ((SubjectMatchRule_record, SubjectMatchRule_enum, SubjectMatchRule_enum_constant, SubjectMatchRule_field, SubjectMatchRule_function, SubjectMatchRule_namespace, SubjectMatchRule_objc_category, SubjectMatchRule_objc_interface, SubjectMatchRule_objc_method, SubjectMatchRule_objc_property, SubjectMatchRule_objc_protocol, SubjectMatchRule_record, SubjectMatchRule_type_alias, SubjectMatchRule_variable)) // CHECK-NEXT: FlagEnum (SubjectMatchRule_enum) // CHECK-NEXT: Flatten (SubjectMatchRule_function) +// CHECK-NEXT: GNUInline (SubjectMatchRule_function) +// CHECK-NEXT: Hot (SubjectMatchRule_function) +// CHECK-NEXT: IBAction (SubjectMatchRule_objc_method_is_instance) // CHECK-NEXT: IFunc (SubjectMatchRule_function) +// CHECK-NEXT: InitPriority (SubjectMatchRule_variable) // CHECK-NEXT: InternalLinkage (SubjectMatchRule_variable, SubjectMatchRule_function, SubjectMatchRule_record) // CHECK-NEXT: LTOVisibilityPublic (SubjectMatchRule_record) +// CHECK-NEXT: Lockable (SubjectMatchRule_record) +// CHECK-NEXT: MSStruct (SubjectMatchRule_record) // CHECK-NEXT: MicroMips (SubjectMatchRule_function) +// CHECK-NEXT: MinSize (SubjectMatchRule_function, SubjectMatchRule_objc_method) // CHECK-NEXT: MinVectorWidth (SubjectMatchRule_function) +// CHECK-NEXT: Mips16 (SubjectMatchRule_function) // CHECK-NEXT: MipsLongCall (SubjectMatchRule_function) // CHECK-NEXT: MipsShortCall (SubjectMatchRule_function) +// CHECK-NEXT: NSConsumed (SubjectMatchRule_variable_is_parameter) +// CHECK-NEXT: NSConsumesSelf (SubjectMatchRule_objc_method) +// CHECK-NEXT: Naked (SubjectMatchRule_function) +// CHECK-NEXT: NoCommon (SubjectMatchRule_variable) // CHECK-NEXT: NoDebug (SubjectMatchRule_hasType_functionType, SubjectMatchRule_objc_method, SubjectMatchRule_variable_not_is_parameter) +// CHECK-NEXT: NoDestroy (SubjectMatchRule_variable) // CHECK-NEXT: NoDuplicate (SubjectMatchRule_function) // CHECK-NEXT: NoEscape (SubjectMatchRule_variable_is_parameter) +// CHECK-NEXT: NoInline (SubjectMatchRule_function) +// CHECK-NEXT: NoInstrumentFunction (SubjectMatchRule_function) // CHECK-NEXT: NoMicroMips (SubjectMatchRule_function) +// CHECK-NEXT: NoMips16 (SubjectMatchRule_function) // CHECK-NEXT: NoSanitize (SubjectMatchRule_function, SubjectMatchRule_objc_method, SubjectMatchRule_variable_is_global) // CHECK-NEXT: NoSanitizeSpecific (SubjectMatchRule_function, SubjectMatchRule_variable_is_global) // CHECK-NEXT: NoSplitStack (SubjectMatchRule_function) // CHECK-NEXT: NoStackProtector (SubjectMatchRule_function) +// CHECK-NEXT: NoThreadSafetyAnalysis (SubjectMatchRule_function) // CHECK-NEXT: NoThrow (SubjectMatchRule_function) // CHECK-NEXT: NotTailCalled (SubjectMatchRule_function) +// CHECK-NEXT: OSConsumed (SubjectMatchRule_variable_is_parameter) +// CHECK-NEXT: OSReturnsNotRetained (SubjectMatchRule_function, SubjectMatchRule_objc_method, SubjectMatchRule_objc_property, SubjectMatchRule_variable_is_parameter) +// CHECK-NEXT: OSReturnsRetained (SubjectMatchRule_function, SubjectMatchRule_objc_method, SubjectMatchRule_objc_property, SubjectMatchRule_variable_is_parameter) +// CHECK-NEXT: OSReturnsRetainedOnNonZero (SubjectMatchRule_variable_is_parameter) +// CHECK-NEXT: OSReturnsRetainedOnZero (SubjectMatchRule_variable_is_parameter) // CHECK-NEXT: ObjCBoxable (SubjectMatchRule_record) +// CHECK-NEXT: ObjCBridge (SubjectMatchRule_record, SubjectMatchRule_type_alias) +// CHECK-NEXT: ObjCBridgeMutable (SubjectMatchRule_record) +// CHECK-NEXT: ObjCBridgeRelated (SubjectMatchRule_record) +// CHECK-NEXT: ObjCException (SubjectMatchRule_objc_interface) +// CHECK-NEXT: ObjCExplicitProtocolImpl (SubjectMatchRule_objc_protocol) +// CHECK-NEXT: ObjCExternallyRetained (SubjectMatchRule_variable_not_is_parameter, SubjectMatchRule_function, SubjectMatchRule_block, SubjectMatchRule_objc_method) // CHECK-NEXT: ObjCMethodFamily (SubjectMatchRule_objc_method) +// CHECK-NEXT: ObjCPreciseLifetime (SubjectMatchRule_variable) +// CHECK-NEXT: ObjCRequiresPropertyDefs (SubjectMatchRule_objc_interface) // CHECK-NEXT: ObjCRequiresSuper (SubjectMatchRule_objc_method) +// CHECK-NEXT: ObjCReturnsInnerPointer (SubjectMatchRule_objc_method, SubjectMatchRule_objc_property) +// CHECK-NEXT: ObjCRootClass (SubjectMatchRule_objc_interface) // CHECK-NEXT: ObjCRuntimeName (SubjectMatchRule_objc_interface, SubjectMatchRule_objc_protocol) // CHECK-NEXT: ObjCRuntimeVisible (SubjectMatchRule_objc_interface) // CHECK-NEXT: ObjCSubclassingRestricted (SubjectMatchRule_objc_interface) @@ -60,11 +113,16 @@ // CHECK-NEXT: ParamTypestate (SubjectMatchRule_variable_is_parameter) // CHECK-NEXT: PassObjectSize (SubjectMatchRule_variable_is_parameter) // CHECK-NEXT: RenderScriptKernel (SubjectMatchRule_function) +// CHECK-NEXT: ReqdWorkGroupSize (SubjectMatchRule_function) // CHECK-NEXT: RequireConstantInit (SubjectMatchRule_variable_is_global) +// CHECK-NEXT: Restrict (SubjectMatchRule_function) // CHECK-NEXT: ReturnTypestate (SubjectMatchRule_function, SubjectMatchRule_variable_is_parameter) // CHECK-NEXT: ReturnsNonNull (SubjectMatchRule_objc_method, SubjectMatchRule_function) +// CHECK-NEXT: ReturnsTwice (SubjectMatchRule_function) +// CHECK-NEXT: ScopedLockable (SubjectMatchRule_record) // CHECK-NEXT: Section (SubjectMatchRule_function, SubjectMatchRule_variable_is_global, SubjectMatchRule_objc_method, SubjectMatchRule_objc_property) // CHECK-NEXT: SetTypestate (SubjectMatchRule_function_is_member) +// CHECK-NEXT: SpeculativeLoadHardening (SubjectMatchRule_function, SubjectMatchRule_objc_method) // CHECK-NEXT: SwiftContext (SubjectMatchRule_variable_is_parameter) // CHECK-NEXT: SwiftErrorResult (SubjectMatchRule_variable_is_parameter) // CHECK-NEXT: SwiftIndirectResult (SubjectMatchRule_variable_is_parameter) @@ -72,6 +130,13 @@ // CHECK-NEXT: Target (SubjectMatchRule_function) // CHECK-NEXT: TestTypestate (SubjectMatchRule_function_is_member) // CHECK-NEXT: TrivialABI (SubjectMatchRule_record) +// CHECK-NEXT: VecReturn (SubjectMatchRule_record) +// CHECK-NEXT: VecTypeHint (SubjectMatchRule_function) +// CHECK-NEXT: WarnUnused (SubjectMatchRule_record) // CHECK-NEXT: WarnUnusedResult (SubjectMatchRule_objc_method, SubjectMatchRule_enum, SubjectMatchRule_record, SubjectMatchRule_hasType_functionType) +// CHECK-NEXT: Weak (SubjectMatchRule_variable, SubjectMatchRule_function, SubjectMatchRule_record) +// CHECK-NEXT: WeakRef (SubjectMatchRule_variable, SubjectMatchRule_function) +// CHECK-NEXT: WorkGroupSizeHint (SubjectMatchRule_function) // CHECK-NEXT: XRayInstrument (SubjectMatchRule_function, SubjectMatchRule_objc_method) // CHECK-NEXT: XRayLogArgs (SubjectMatchRule_function, SubjectMatchRule_objc_method) +// CHECK-NEXT: End of supported attributes. diff --git a/test/Misc/target-invalid-cpu-note.c b/test/Misc/target-invalid-cpu-note.c index f2b36d44b9f4..babfaa9ffcb4 100644 --- a/test/Misc/target-invalid-cpu-note.c +++ b/test/Misc/target-invalid-cpu-note.c @@ -16,7 +16,7 @@ // X86-SAME: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, // X86-SAME: nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, // X86-SAME: core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, -// X86-SAME: skx, cannonlake, icelake-client, icelake-server, knl, knm, lakemont, k6, k6-2, k6-3, +// X86-SAME: skx, cascadelake, cannonlake, icelake-client, icelake-server, knl, knm, lakemont, k6, k6-2, k6-3, // X86-SAME: athlon, athlon-tbird, athlon-xp, athlon-mp, athlon-4, k8, athlon64, // X86-SAME: athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, // X86-SAME: barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, @@ -27,7 +27,7 @@ // X86_64: note: valid target CPU values are: nocona, core2, penryn, bonnell, // X86_64-SAME: atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, // X86_64-SAME: sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, -// X86_64-SAME: core-avx2, broadwell, skylake, skylake-avx512, skx, cannonlake, +// X86_64-SAME: core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cannonlake, // X86_64-SAME: icelake-client, icelake-server, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, // X86_64-SAME: athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, // X86_64-SAME: btver2, bdver1, bdver2, bdver3, bdver4, znver1, x86-64 @@ -84,10 +84,6 @@ // PPC-SAME: pwr7, power8, pwr8, power9, pwr9, powerpc, ppc, powerpc64, ppc64, // PPC-SAME: powerpc64le, ppc64le -// RUN: not %clang_cc1 -triple nios2--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix NIOS -// NIOS: error: unknown target CPU 'not-a-cpu' -// NIOS: note: valid target CPU values are: nios2r1, nios2r2 - // RUN: not %clang_cc1 -triple mips--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix MIPS // MIPS: error: unknown target CPU 'not-a-cpu' // MIPS: note: valid target CPU values are: mips1, mips2, mips3, mips4, mips5, @@ -100,7 +96,7 @@ // RUN: not %clang_cc1 -triple hexagon--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix HEXAGON // HEXAGON: error: unknown target CPU 'not-a-cpu' -// HEXAGON: note: valid target CPU values are: hexagonv4, hexagonv5, hexagonv55, +// HEXAGON: note: valid target CPU values are: hexagonv5, hexagonv55, // HEXAGON-SAME: hexagonv60, hexagonv62, hexagonv65 // RUN: not %clang_cc1 -triple bpf--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix BPF diff --git a/test/Misc/warning-flags.c b/test/Misc/warning-flags.c index 4f9469f8e582..05172b220859 100644 --- a/test/Misc/warning-flags.c +++ b/test/Misc/warning-flags.c @@ -18,7 +18,7 @@ This test serves two purposes: The list of warnings below should NEVER grow. It should gradually shrink to 0. -CHECK: Warnings without flags (76): +CHECK: Warnings without flags (74): CHECK-NEXT: ext_excess_initializers CHECK-NEXT: ext_excess_initializers_in_char_array_initializer CHECK-NEXT: ext_expected_semi_decl_list @@ -29,7 +29,6 @@ CHECK-NEXT: ext_missing_whitespace_after_macro_name CHECK-NEXT: ext_new_paren_array_nonconst CHECK-NEXT: ext_plain_complex CHECK-NEXT: ext_template_arg_extra_parens -CHECK-NEXT: ext_typecheck_comparison_of_pointer_integer CHECK-NEXT: ext_typecheck_cond_incompatible_operands CHECK-NEXT: ext_typecheck_ordered_comparison_of_pointer_integer CHECK-NEXT: ext_using_undefined_std @@ -40,7 +39,6 @@ CHECK-NEXT: warn_accessor_property_type_mismatch CHECK-NEXT: warn_arcmt_nsalloc_realloc CHECK-NEXT: warn_asm_label_on_auto_decl CHECK-NEXT: warn_c_kext -CHECK-NEXT: warn_call_to_pure_virtual_member_function_from_ctor_dtor CHECK-NEXT: warn_call_wrong_number_of_arguments CHECK-NEXT: warn_case_empty_range CHECK-NEXT: warn_char_constant_too_large |
