From b270bd4998fcf35906b404e710a9177a19bc35b5 Mon Sep 17 00:00:00 2001 From: "Matt McCutchen (Correct Computation)" Date: Wed, 30 Dec 2020 12:16:16 -0500 Subject: [PATCH] Revert unintended CR/LF changes to non-3C files that originated in 277d84a5841634783e7d3752707e2a1e4e57a930. We first submitted them in PR #837, but Mandeep noticed (https://github.com/microsoft/checkedc-clang/pull/837#pullrequestreview-413893474) and the unintended changes were removed from that PR in 74bfcafad6b194bec68c30e04063aea5591a7f7a. However, when the squash of PR #837 was merged with the original commits in cfc998e79de0a093fae4ae16d56c1f90aa96a854, the unintended changes were incorrectly retained. They got submitted again in the next 3C PR (#891), and no one noticed that time. --- clang/automation/README.txt | 4 +- clang/docs/DriverArchitecture.png | Bin 72964 -> 72966 bytes clang/docs/PCHLayout.png | Bin 31906 -> 31908 bytes clang/test/AST/ast-dump-attr.m | 114 ++-- clang/test/AST/ast-dump-c-attr.c | 94 ++-- clang/test/AST/ast-dump-invalid.cpp | 124 ++--- clang/test/AST/objc-default-ctor-init.mm | 42 +- clang/test/AST/sourceranges.cpp | 292 +++++----- .../dcl.init/dcl.init.ref/p5-examples.cpp | 112 ++-- .../p15-star-this-capture.cpp | 44 +- .../CXX/lex/lex.literal/lex.string/p4.cpp | 34 +- .../attr-x86-no_caller_saved_registers.cpp | 62 +-- clang/test/FixIt/fixit-newline-style.c | 22 +- ...tem-header-line-directive-ms-lineendings.c | 42 +- clang/test/Parser/objc-attr.m | 56 +- clang/test/Preprocessor/macro_vaopt_check.cpp | 128 ++--- clang/test/SemaCXX/attr-gnu.cpp | 28 +- ...attr-non-x86-no_caller_saved_registers.cpp | 58 +- .../attr-x86-no_caller_saved_registers.cpp | 66 +-- clang/test/SemaCXX/compound-literal.cpp | 220 ++++---- clang/test/SemaCXX/warn-redundant-move.cpp | 232 ++++---- clang/test/SemaCXX/warn-shadow.cpp | 94 ++-- clang/test/SemaObjCXX/block-cleanup.mm | 32 +- .../SemaTemplate/default-expr-arguments-3.cpp | 110 ++-- clang/tools/clang-format-vs/ClangFormat.sln | 44 +- .../ClangFormat/ClangFormat.csproj | 522 +++++++++--------- .../ClangFormat/ClangFormat.vsct | 254 ++++----- .../ClangFormat/Properties/AssemblyInfo.cs | 66 +-- .../ClangFormat/Resources.Designer.cs | 126 ++--- .../ClangFormat/Resources.resx | 256 ++++----- .../ClangFormat/VSPackage.resx | 278 +++++----- clang/tools/clang-format-vs/README.txt | 102 ++-- clang/tools/scan-build/bin/scan-build.bat | 2 +- .../tools/scan-build/libexec/c++-analyzer.bat | 2 +- .../tools/scan-build/libexec/ccc-analyzer.bat | 2 +- clang/www/analyzer/images/analyzer_html.png | Bin 63088 -> 63091 bytes clang/www/analyzer/images/analyzer_xcode.png | Bin 87695 -> 87697 bytes .../images/example_attribute_nonnull.png | Bin 25027 -> 25028 bytes .../images/example_cf_returns_retained.png | Bin 43526 -> 43528 bytes .../analyzer/images/example_custom_assert.png | Bin 23685 -> 23686 bytes .../images/example_ns_returns_retained.png | Bin 40404 -> 40406 bytes .../analyzer/images/example_null_pointer.png | Bin 23578 -> 23580 bytes .../analyzer/images/example_use_assert.png | Bin 25512 -> 25513 bytes clang/www/analyzer/images/scan_build_cmd.png | Bin 29668 -> 29669 bytes clang/www/carbon-compile.png | Bin 23701 -> 23702 bytes clang/www/demo/cathead.png | Bin 21601 -> 21602 bytes clang/www/feature-compile1.png | Bin 91244 -> 91247 bytes clang/www/feature-compile2.png | Bin 140962 -> 140963 bytes clang/www/feature-memory1.png | Bin 92677 -> 92680 bytes 49 files changed, 1832 insertions(+), 1832 deletions(-) diff --git a/clang/automation/README.txt b/clang/automation/README.txt index a472852e23f1..dbbe29e4ca6f 100644 --- a/clang/automation/README.txt +++ b/clang/automation/README.txt @@ -1,2 +1,2 @@ -This directory contains scripts used for automated builds and testing -of the Checked C clang compiler. +This directory contains scripts used for automated builds and testing +of the Checked C clang compiler. diff --git a/clang/docs/DriverArchitecture.png b/clang/docs/DriverArchitecture.png index 8a4bfdf17bb22197aa94b31978daf57c95eb6323..056a70a98fbaac0ff8be556ba6f369899fbde279 100644 GIT binary patch delta 23 fcmZqK#nQHmg|#!l&z*N8%cUSj-p$v7^iBZ)W!?zE delta 20 ccmZqM#nQ5ig{3pV&wV57rJ&6>g7i)S09928r~m)} diff --git a/clang/docs/PCHLayout.png b/clang/docs/PCHLayout.png index 4a09475f7165ffb5f65feaaef501dbde293def39..c304e04a05773ee25595362a3465d65c403de699 100644 GIT binary patch delta 23 ecmZ4VlX1yUM%K;%KX=}ZEK-q-yqo1BTa*E7ga^U^ delta 20 bcmZ4TlX1~cMwZS1KlhESQjwb#B3qOJT0sY? diff --git a/clang/test/AST/ast-dump-attr.m b/clang/test/AST/ast-dump-attr.m index f0a3f7439ec0..8775d40d9985 100644 --- a/clang/test/AST/ast-dump-attr.m +++ b/clang/test/AST/ast-dump-attr.m @@ -1,57 +1,57 @@ -// 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 +// 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/clang/test/AST/ast-dump-c-attr.c b/clang/test/AST/ast-dump-c-attr.c index 14c13ac5c01c..8452b797e2bd 100644 --- a/clang/test/AST/ast-dump-c-attr.c +++ b/clang/test/AST/ast-dump-c-attr.c @@ -1,47 +1,47 @@ -// 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{{[^ ]*}} "" "" - -enum [[deprecated("Frobble")]] Test2 { - Test3 [[deprecated]] -}; -// CHECK: EnumDecl{{.*}}Test2 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "Frobble" "" -// CHECK-NEXT: EnumConstantDecl{{.*}}Test3 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" - -struct [[deprecated]] Test4 { - [[deprecated("Frobble")]] int Test5, Test6; - int Test7 [[deprecated]] : 12; -}; -// CHECK: RecordDecl{{.*}}Test4 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" -// CHECK-NEXT: FieldDecl{{.*}}Test5 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "Frobble" "" -// CHECK-NEXT: FieldDecl{{.*}}Test6 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "Frobble" "" -// CHECK-NEXT: FieldDecl{{.*}}Test7 -// CHECK-NEXT: Constant{{.*}}'int' -// CHECK-NEXT: IntegerLiteral{{.*}}'int' 12 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" - -struct [[deprecated]] Test8; -// CHECK: RecordDecl{{.*}}Test8 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" - -[[deprecated]] void Test9(int Test10 [[deprecated]]); -// CHECK: FunctionDecl{{.*}}Test9 -// CHECK-NEXT: ParmVarDecl{{.*}}Test10 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" - -void Test11 [[deprecated]](void); -// CHECK: FunctionDecl{{.*}}Test11 -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" - -void Test12(void) [[deprecated]] {} -// CHECK: FunctionDecl{{.*}}Test12 -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" +// 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{{[^ ]*}} "" "" + +enum [[deprecated("Frobble")]] Test2 { + Test3 [[deprecated]] +}; +// CHECK: EnumDecl{{.*}}Test2 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "Frobble" "" +// CHECK-NEXT: EnumConstantDecl{{.*}}Test3 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" + +struct [[deprecated]] Test4 { + [[deprecated("Frobble")]] int Test5, Test6; + int Test7 [[deprecated]] : 12; +}; +// CHECK: RecordDecl{{.*}}Test4 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" +// CHECK-NEXT: FieldDecl{{.*}}Test5 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "Frobble" "" +// CHECK-NEXT: FieldDecl{{.*}}Test6 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "Frobble" "" +// CHECK-NEXT: FieldDecl{{.*}}Test7 +// CHECK-NEXT: Constant{{.*}}'int' +// CHECK-NEXT: IntegerLiteral{{.*}}'int' 12 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" + +struct [[deprecated]] Test8; +// CHECK: RecordDecl{{.*}}Test8 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" + +[[deprecated]] void Test9(int Test10 [[deprecated]]); +// CHECK: FunctionDecl{{.*}}Test9 +// CHECK-NEXT: ParmVarDecl{{.*}}Test10 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" + +void Test11 [[deprecated]](void); +// CHECK: FunctionDecl{{.*}}Test11 +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" + +void Test12(void) [[deprecated]] {} +// CHECK: FunctionDecl{{.*}}Test12 +// CHECK-NEXT: CompoundStmt +// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} "" "" diff --git a/clang/test/AST/ast-dump-invalid.cpp b/clang/test/AST/ast-dump-invalid.cpp index d0db13786306..8f7e6eb14e5e 100644 --- a/clang/test/AST/ast-dump-invalid.cpp +++ b/clang/test/AST/ast-dump-invalid.cpp @@ -1,62 +1,62 @@ -// 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 -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 {{.*}} 'T' -// CHECK-NEXT: |-DeclRefExpr {{.*}} 'T' lvalue ParmVar {{.*}} 'i' 'T' -// CHECK-NEXT: `-DeclRefExpr {{.*}} '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 {{.*}} -// CHECK-NEXT: |-OpaqueValueExpr {{.*}} <> 'bool' -// CHECK-NEXT: |-ReturnStmt {{.*}} -// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 4 -// CHECK-NEXT: `-ReturnStmt {{.*}} -// CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'int' -// CHECK-NEXT: `-DeclRefExpr {{.*}} '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:44:8 struct Str definition -// CHECK: | |-CXXRecordDecl {{.*}} col:8 implicit struct Str -// CHECK-NEXT: | `-CXXMethodDecl {{.*}} col:11 invalid foo1 'double (double, int)' -// CHECK-NEXT: | |-ParmVarDecl {{.*}} col:22 'double' -// CHECK-NEXT: | `-ParmVarDecl {{.*}} > col:36 invalid 'int' -// CHECK-NEXT: `-CXXMethodDecl {{.*}} parent {{.*}} line:47:13 invalid foo1 'double (double, int)' -// CHECK-NEXT: |-ParmVarDecl {{.*}} col:24 'double' -// CHECK-NEXT: |-ParmVarDecl {{.*}} > col:38 invalid 'int' -// CHECK-NEXT: `-CompoundStmt {{.*}} -// CHECK-NEXT: `-ReturnStmt {{.*}} -// CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'double' -// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 45 +// 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 +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 {{.*}} 'T' +// CHECK-NEXT: |-DeclRefExpr {{.*}} 'T' lvalue ParmVar {{.*}} 'i' 'T' +// CHECK-NEXT: `-DeclRefExpr {{.*}} '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 {{.*}} +// CHECK-NEXT: |-OpaqueValueExpr {{.*}} <> 'bool' +// CHECK-NEXT: |-ReturnStmt {{.*}} +// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 4 +// CHECK-NEXT: `-ReturnStmt {{.*}} +// CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'int' +// CHECK-NEXT: `-DeclRefExpr {{.*}} '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:44:8 struct Str definition +// CHECK: | |-CXXRecordDecl {{.*}} col:8 implicit struct Str +// CHECK-NEXT: | `-CXXMethodDecl {{.*}} col:11 invalid foo1 'double (double, int)' +// CHECK-NEXT: | |-ParmVarDecl {{.*}} col:22 'double' +// CHECK-NEXT: | `-ParmVarDecl {{.*}} > col:36 invalid 'int' +// CHECK-NEXT: `-CXXMethodDecl {{.*}} parent {{.*}} line:47:13 invalid foo1 'double (double, int)' +// CHECK-NEXT: |-ParmVarDecl {{.*}} col:24 'double' +// CHECK-NEXT: |-ParmVarDecl {{.*}} > col:38 invalid 'int' +// CHECK-NEXT: `-CompoundStmt {{.*}} +// CHECK-NEXT: `-ReturnStmt {{.*}} +// CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'double' +// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 45 diff --git a/clang/test/AST/objc-default-ctor-init.mm b/clang/test/AST/objc-default-ctor-init.mm index a01dcd790b9a..a14a243a31cc 100644 --- a/clang/test/AST/objc-default-ctor-init.mm +++ b/clang/test/AST/objc-default-ctor-init.mm @@ -1,21 +1,21 @@ -// RUN: %clang_cc1 -triple x86_64-apple-macosx10.10 -std=c++11 -ast-dump %s | FileCheck %s -// CHECK: CXXCtorInitializer Field {{.*}} 'ptr' 'void *' -// CHECK: CXXCtorInitializer Field {{.*}} 'q' 'Q' - -@interface NSObject -@end - -@interface I : NSObject -@end - -struct Q { Q(); }; - -struct S { - S(); - void *ptr = nullptr; - Q q; -}; - -@implementation I -S::S() {} -@end +// RUN: %clang_cc1 -triple x86_64-apple-macosx10.10 -std=c++11 -ast-dump %s | FileCheck %s +// CHECK: CXXCtorInitializer Field {{.*}} 'ptr' 'void *' +// CHECK: CXXCtorInitializer Field {{.*}} 'q' 'Q' + +@interface NSObject +@end + +@interface I : NSObject +@end + +struct Q { Q(); }; + +struct S { + S(); + void *ptr = nullptr; + Q q; +}; + +@implementation I +S::S() {} +@end diff --git a/clang/test/AST/sourceranges.cpp b/clang/test/AST/sourceranges.cpp index 12de073775d6..53f2f57e6754 100644 --- a/clang/test/AST/sourceranges.cpp +++ b/clang/test/AST/sourceranges.cpp @@ -1,146 +1,146 @@ -// RUN: %clang_cc1 -triple i686-mingw32 -ast-dump %s | FileCheck %s -// RUN: %clang_cc1 -triple i686-mingw32 -std=c++1z -ast-dump %s | FileCheck %s -check-prefix=CHECK-1Z - -template -class P { - public: - P(T* t) {} -}; - -namespace foo { -class A { public: A(int = 0) {} }; -enum B {}; -typedef int C; -} - -// CHECK: VarDecl {{0x[0-9a-fA-F]+}} col:15 ImplicitConstrArray 'foo::A [2]' -static foo::A ImplicitConstrArray[2]; - -int main() { - // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} 'foo::A *' - P p14 = new foo::A; - // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} 'foo::B *' - P p24 = new foo::B; - // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} 'foo::C *' - P pr4 = new foo::C; -} - -foo::A getName() { - // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} 'foo::A' - return foo::A(); -} - -void destruct(foo::A *a1, foo::A *a2, P *p1) { - // CHECK: MemberExpr {{0x[0-9a-fA-F]+}} '' ->~A - a1->~A(); - // CHECK: MemberExpr {{0x[0-9a-fA-F]+}} '' ->~A - a2->foo::A::~A(); - // CHECK: MemberExpr {{0x[0-9a-fA-F]+}} '' ->~P - p1->~P(); -} - -struct D { - D(int); - ~D(); -}; - -void construct() { - using namespace foo; - A a = A(12); - // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} 'foo::A' 'void (int){{( __attribute__\(\(thiscall\)\))?}}' - D d = D(12); - // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} 'D' 'void (int){{( __attribute__\(\(thiscall\)\))?}}' -} - -namespace PR38987 { -struct A { A(); }; -template void f() { T{}; } -template void f(); -// CHECK: CXXTemporaryObjectExpr {{.*}} 'PR38987::A':'PR38987::A' -} - -void abort() __attribute__((noreturn)); - -namespace std { -typedef decltype(sizeof(int)) size_t; - -template struct initializer_list { - const E *p; - size_t n; - initializer_list(const E *p, size_t n) : p(p), n(n) {} -}; - -template struct pair { - F f; - S s; - pair(const F &f, const S &s) : f(f), s(s) {} -}; - -struct string { - const char *str; - string() { abort(); } - string(const char *S) : str(S) {} - ~string() { abort(); } -}; - -template -struct map { - using T = pair; - map(initializer_list i, const string &s = string()) {} - ~map() { abort(); } -}; - -}; // namespace std - -#if __cplusplus >= 201703L -// CHECK-1Z: FunctionDecl {{.*}} construct_with_init_list -std::map construct_with_init_list() { - // CHECK-1Z-NEXT: CompoundStmt - // CHECK-1Z-NEXT: ReturnStmt {{.*}} {{0, 0}}; -} - -// CHECK-1Z: NamespaceDecl {{.*}} in_class_init -namespace in_class_init { - struct A {}; - - // CHECK-1Z: CXXRecordDecl {{.*}} struct B definition - struct B { - // CHECK-1Z: FieldDecl {{.*}} a 'in_class_init::A' - // CHECK-1Z-NEXT: InitListExpr {{.*}} +class P { + public: + P(T* t) {} +}; + +namespace foo { +class A { public: A(int = 0) {} }; +enum B {}; +typedef int C; +} + +// CHECK: VarDecl {{0x[0-9a-fA-F]+}} col:15 ImplicitConstrArray 'foo::A [2]' +static foo::A ImplicitConstrArray[2]; + +int main() { + // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} 'foo::A *' + P p14 = new foo::A; + // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} 'foo::B *' + P p24 = new foo::B; + // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} 'foo::C *' + P pr4 = new foo::C; +} + +foo::A getName() { + // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} 'foo::A' + return foo::A(); +} + +void destruct(foo::A *a1, foo::A *a2, P *p1) { + // CHECK: MemberExpr {{0x[0-9a-fA-F]+}} '' ->~A + a1->~A(); + // CHECK: MemberExpr {{0x[0-9a-fA-F]+}} '' ->~A + a2->foo::A::~A(); + // CHECK: MemberExpr {{0x[0-9a-fA-F]+}} '' ->~P + p1->~P(); +} + +struct D { + D(int); + ~D(); +}; + +void construct() { + using namespace foo; + A a = A(12); + // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} 'foo::A' 'void (int){{( __attribute__\(\(thiscall\)\))?}}' + D d = D(12); + // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} 'D' 'void (int){{( __attribute__\(\(thiscall\)\))?}}' +} + +namespace PR38987 { +struct A { A(); }; +template void f() { T{}; } +template void f(); +// CHECK: CXXTemporaryObjectExpr {{.*}} 'PR38987::A':'PR38987::A' +} + +void abort() __attribute__((noreturn)); + +namespace std { +typedef decltype(sizeof(int)) size_t; + +template struct initializer_list { + const E *p; + size_t n; + initializer_list(const E *p, size_t n) : p(p), n(n) {} +}; + +template struct pair { + F f; + S s; + pair(const F &f, const S &s) : f(f), s(s) {} +}; + +struct string { + const char *str; + string() { abort(); } + string(const char *S) : str(S) {} + ~string() { abort(); } +}; + +template +struct map { + using T = pair; + map(initializer_list i, const string &s = string()) {} + ~map() { abort(); } +}; + +}; // namespace std + +#if __cplusplus >= 201703L +// CHECK-1Z: FunctionDecl {{.*}} construct_with_init_list +std::map construct_with_init_list() { + // CHECK-1Z-NEXT: CompoundStmt + // CHECK-1Z-NEXT: ReturnStmt {{.*}} {{0, 0}}; +} + +// CHECK-1Z: NamespaceDecl {{.*}} in_class_init +namespace in_class_init { + struct A {}; + + // CHECK-1Z: CXXRecordDecl {{.*}} struct B definition + struct B { + // CHECK-1Z: FieldDecl {{.*}} a 'in_class_init::A' + // CHECK-1Z-NEXT: InitListExpr {{.*}} &1 | FileCheck %s - -// CHECK-LABEL: example0 -void example0() { - double d = 2.0; - // CHECK: VarDecl{{.*}}rd 'double &' - // CHECK-NEXT: DeclRefExpr - double &rd = d; - // CHECK: VarDecl{{.*}}rcd 'const double &' - // CHECK-NEXT: ImplicitCastExpr{{.*}}'const double' lvalue - const double &rcd = d; -} - -struct A { }; -struct B : A { } b; - -// CHECK-LABEL: example1 -void example1() { - // CHECK: VarDecl{{.*}}ra 'A &' - // CHECK: ImplicitCastExpr{{.*}}'A' lvalue - A &ra = b; - // CHECK: VarDecl{{.*}}rca 'const A &' - // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue - // CHECK-NOT: MaterializeTemporaryExpr - // CHECK: ImplicitCastExpr{{.*}}'const B' lvalue - const A& rca = b; -} - -extern B f(); - -struct X { - operator B(); -} x; - -// CHECK-LABEL: example2 -void example2() { - // CHECK: VarDecl{{.*}}rca 'const A &' - // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue - // CHECK: MaterializeTemporaryExpr{{.*}}'const B' - // CHECK: ImplicitCastExpr{{.*}}'const B' - // CHECK: CallExpr{{.*}}B - const A &rca = f(); - // CHECK: VarDecl{{.*}}r 'const A &' - // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue - // CHECK: MaterializeTemporaryExpr{{.*}}'const B' - // CHECK: ImplicitCastExpr{{.*}}'const B' - // CHECK: CXXMemberCallExpr{{.*}}'B' - const A& r = x; -} - -// CHECK-LABEL: example3 -void example3() { - // CHECK: VarDecl{{.*}}rcd2 'const double &' - // CHECK: ImplicitCastExpr{{.*}} - const double& rcd2 = 2; -} +// RUN: %clang_cc1 -ast-dump %s 2>&1 | FileCheck %s + +// CHECK-LABEL: example0 +void example0() { + double d = 2.0; + // CHECK: VarDecl{{.*}}rd 'double &' + // CHECK-NEXT: DeclRefExpr + double &rd = d; + // CHECK: VarDecl{{.*}}rcd 'const double &' + // CHECK-NEXT: ImplicitCastExpr{{.*}}'const double' lvalue + const double &rcd = d; +} + +struct A { }; +struct B : A { } b; + +// CHECK-LABEL: example1 +void example1() { + // CHECK: VarDecl{{.*}}ra 'A &' + // CHECK: ImplicitCastExpr{{.*}}'A' lvalue + A &ra = b; + // CHECK: VarDecl{{.*}}rca 'const A &' + // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue + // CHECK-NOT: MaterializeTemporaryExpr + // CHECK: ImplicitCastExpr{{.*}}'const B' lvalue + const A& rca = b; +} + +extern B f(); + +struct X { + operator B(); +} x; + +// CHECK-LABEL: example2 +void example2() { + // CHECK: VarDecl{{.*}}rca 'const A &' + // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue + // CHECK: MaterializeTemporaryExpr{{.*}}'const B' + // CHECK: ImplicitCastExpr{{.*}}'const B' + // CHECK: CallExpr{{.*}}B + const A &rca = f(); + // CHECK: VarDecl{{.*}}r 'const A &' + // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue + // CHECK: MaterializeTemporaryExpr{{.*}}'const B' + // CHECK: ImplicitCastExpr{{.*}}'const B' + // CHECK: CXXMemberCallExpr{{.*}}'B' + const A& r = x; +} + +// CHECK-LABEL: example3 +void example3() { + // CHECK: VarDecl{{.*}}rcd2 'const double &' + // CHECK: ImplicitCastExpr{{.*}} + const double& rcd2 = 2; +} diff --git a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp index eac6c40c6085..bae1e25add35 100644 --- a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp +++ b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp @@ -1,22 +1,22 @@ -// RUN: %clang_cc1 -fsyntax-only -std=c++1z %s -verify - -class NonCopyable { - NonCopyable(const NonCopyable&) = delete; //expected-note3{{explicitly marked deleted here}} - int x = 10; - void foo() { - auto L = [this] { return x; }; - const auto &M = [*this] { return x; };//expected-error{{call to deleted}} - const auto &M2 = [this] () -> auto&& { - ++x; - return [*this] { //expected-error{{call to deleted}} expected-warning{{reference to local}} - return ++x; //expected-error{{read-only}} - }; - }; - const auto &M3 = [*this] () mutable -> auto&& { //expected-error{{call to deleted}} - ++x; - return [this] { // expected-warning{{reference to local}} - return x; - }; - }; - } -}; +// RUN: %clang_cc1 -fsyntax-only -std=c++1z %s -verify + +class NonCopyable { + NonCopyable(const NonCopyable&) = delete; //expected-note3{{explicitly marked deleted here}} + int x = 10; + void foo() { + auto L = [this] { return x; }; + const auto &M = [*this] { return x; };//expected-error{{call to deleted}} + const auto &M2 = [this] () -> auto&& { + ++x; + return [*this] { //expected-error{{call to deleted}} expected-warning{{reference to local}} + return ++x; //expected-error{{read-only}} + }; + }; + const auto &M3 = [*this] () mutable -> auto&& { //expected-error{{call to deleted}} + ++x; + return [this] { // expected-warning{{reference to local}} + return x; + }; + }; + } +}; diff --git a/clang/test/CXX/lex/lex.literal/lex.string/p4.cpp b/clang/test/CXX/lex/lex.literal/lex.string/p4.cpp index b73c8ed711a9..f8561ba17bcf 100644 --- a/clang/test/CXX/lex/lex.literal/lex.string/p4.cpp +++ b/clang/test/CXX/lex/lex.literal/lex.string/p4.cpp @@ -1,17 +1,17 @@ -// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s -// expected-no-diagnostics - -// NOTE: This file intentionally uses DOS-style line endings to test -// that we don't propagate them into string literals as per [lex.string]p4. - -constexpr const char* p = R"(a\ -b -c)"; - -static_assert(p[0] == 'a', ""); -static_assert(p[1] == '\\', ""); -static_assert(p[2] == '\n', ""); -static_assert(p[3] == 'b', ""); -static_assert(p[4] == '\n', ""); -static_assert(p[5] == 'c', ""); -static_assert(p[6] == '\0', ""); +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s +// expected-no-diagnostics + +// NOTE: This file intentionally uses DOS-style line endings to test +// that we don't propagate them into string literals as per [lex.string]p4. + +constexpr const char* p = R"(a\ +b +c)"; + +static_assert(p[0] == 'a', ""); +static_assert(p[1] == '\\', ""); +static_assert(p[2] == '\n', ""); +static_assert(p[3] == 'b', ""); +static_assert(p[4] == '\n', ""); +static_assert(p[5] == 'c', ""); +static_assert(p[6] == '\0', ""); diff --git a/clang/test/CodeGenCXX/attr-x86-no_caller_saved_registers.cpp b/clang/test/CodeGenCXX/attr-x86-no_caller_saved_registers.cpp index f583f16eb569..c032e38f31b3 100644 --- a/clang/test/CodeGenCXX/attr-x86-no_caller_saved_registers.cpp +++ b/clang/test/CodeGenCXX/attr-x86-no_caller_saved_registers.cpp @@ -1,31 +1,31 @@ -// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu %s -emit-llvm -o - | FileCheck %s -// RUN: %clang_cc1 -triple x86_64-pc-win32 %s -emit-llvm -o - | FileCheck %s - -// CHECK: foo{{[^#]*}}#[[ATTRS:[0-9]+]] -__attribute__((no_caller_saved_registers)) void foo() {} -namespace S { -// CHECK: bar{{[^#]*}}#[[ATTRS]] -__attribute__((no_caller_saved_registers)) void bar(int *a) { foo(); } -} - -struct St { - static void baz(int *a) __attribute__((no_caller_saved_registers)) { S::bar(a); } -}; - -__attribute((no_caller_saved_registers)) void (*foobar)(void); - -// CHECK-LABEL: @main -int main(int argc, char **argv) { - St::baz(&argc); - // CHECK: [[FOOBAR:%.+]] = load void ()*, void ()** @{{.*}}foobar{{.*}}, - // CHECK-NEXT: call void [[FOOBAR]]() #[[ATTRS1:.+]] - foobar(); - return 0; -} - -// CHECK: baz{{[^#]*}}#[[ATTRS]] - -// CHECK: attributes #[[ATTRS]] = { -// CHECK-SAME: "no_caller_saved_registers" -// CHECK-SAME: } -// CHECK: attributes #[[ATTRS1]] = { "no_caller_saved_registers" } +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu %s -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-win32 %s -emit-llvm -o - | FileCheck %s + +// CHECK: foo{{[^#]*}}#[[ATTRS:[0-9]+]] +__attribute__((no_caller_saved_registers)) void foo() {} +namespace S { +// CHECK: bar{{[^#]*}}#[[ATTRS]] +__attribute__((no_caller_saved_registers)) void bar(int *a) { foo(); } +} + +struct St { + static void baz(int *a) __attribute__((no_caller_saved_registers)) { S::bar(a); } +}; + +__attribute((no_caller_saved_registers)) void (*foobar)(void); + +// CHECK-LABEL: @main +int main(int argc, char **argv) { + St::baz(&argc); + // CHECK: [[FOOBAR:%.+]] = load void ()*, void ()** @{{.*}}foobar{{.*}}, + // CHECK-NEXT: call void [[FOOBAR]]() #[[ATTRS1:.+]] + foobar(); + return 0; +} + +// CHECK: baz{{[^#]*}}#[[ATTRS]] + +// CHECK: attributes #[[ATTRS]] = { +// CHECK-SAME: "no_caller_saved_registers" +// CHECK-SAME: } +// CHECK: attributes #[[ATTRS1]] = { "no_caller_saved_registers" } diff --git a/clang/test/FixIt/fixit-newline-style.c b/clang/test/FixIt/fixit-newline-style.c index 19aeb4f19217..c43eb3789e68 100644 --- a/clang/test/FixIt/fixit-newline-style.c +++ b/clang/test/FixIt/fixit-newline-style.c @@ -1,11 +1,11 @@ -// RUN: %clang_cc1 -pedantic -Wunused-label -x c %s 2>&1 | FileCheck %s -strict-whitespace - -// This file intentionally uses a CRLF newline style -// -// CHECK: warning: unused label 'ddd' -// CHECK-NEXT: {{^ ddd:}} -// CHECK-NEXT: {{^ \^~~~$}} -void f() { - ddd: - ; -} +// RUN: %clang_cc1 -pedantic -Wunused-label -x c %s 2>&1 | FileCheck %s -strict-whitespace + +// This file intentionally uses a CRLF newline style +// +// CHECK: warning: unused label 'ddd' +// CHECK-NEXT: {{^ ddd:}} +// CHECK-NEXT: {{^ \^~~~$}} +void f() { + ddd: + ; +} diff --git a/clang/test/Frontend/system-header-line-directive-ms-lineendings.c b/clang/test/Frontend/system-header-line-directive-ms-lineendings.c index 8ed1e5401047..57b7a27ea49c 100644 --- a/clang/test/Frontend/system-header-line-directive-ms-lineendings.c +++ b/clang/test/Frontend/system-header-line-directive-ms-lineendings.c @@ -1,21 +1,21 @@ -// RUN: %clang_cc1 %s -E -o - -I %S/Inputs -isystem %S/Inputs/SystemHeaderPrefix | FileCheck %s -#include -#include - -#include "line-directive.h" - -// This tests that the line numbers for the current file are correctly outputted -// for the include-file-completed test case. This file should be CRLF. - -// CHECK: # 1 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 -// CHECK: # 1 "{{.*}}noline.h" 1 3 -// CHECK: foo(); -// CHECK: # 3 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 -// CHECK: # 1 "{{.*}}line-directive-in-system.h" 1 3 -// The "3" below indicates that "foo.h" is considered a system header. -// CHECK: # 1 "foo.h" 3 -// CHECK: foo(); -// CHECK: # 4 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 -// CHECK: # 1 "{{.*}}line-directive.h" 1 -// CHECK: # 10 "foo.h"{{$}} -// CHECK: # 6 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 +// RUN: %clang_cc1 %s -E -o - -I %S/Inputs -isystem %S/Inputs/SystemHeaderPrefix | FileCheck %s +#include +#include + +#include "line-directive.h" + +// This tests that the line numbers for the current file are correctly outputted +// for the include-file-completed test case. This file should be CRLF. + +// CHECK: # 1 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 +// CHECK: # 1 "{{.*}}noline.h" 1 3 +// CHECK: foo(); +// CHECK: # 3 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 +// CHECK: # 1 "{{.*}}line-directive-in-system.h" 1 3 +// The "3" below indicates that "foo.h" is considered a system header. +// CHECK: # 1 "foo.h" 3 +// CHECK: foo(); +// CHECK: # 4 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 +// CHECK: # 1 "{{.*}}line-directive.h" 1 +// CHECK: # 10 "foo.h"{{$}} +// CHECK: # 6 "{{.*}}system-header-line-directive-ms-lineendings.c" 2 diff --git a/clang/test/Parser/objc-attr.m b/clang/test/Parser/objc-attr.m index f02dd12d89d5..7e65eff745da 100644 --- a/clang/test/Parser/objc-attr.m +++ b/clang/test/Parser/objc-attr.m @@ -1,28 +1,28 @@ -// RUN: %clang_cc1 -fsyntax-only -fdouble-square-bracket-attributes -triple x86_64-apple-macosx10.10.0 -verify %s -// expected-no-diagnostics - -@interface NSObject -@end - -[[clang::objc_exception]] -@interface Foo { - [[clang::iboutlet]] NSObject *h; -} -@property (readonly) [[clang::objc_returns_inner_pointer]] void *i, *j; -@property (readonly) [[clang::iboutlet]] NSObject *k; -@end - -[[clang::objc_runtime_name("name")]] @protocol Bar; - -[[clang::objc_protocol_requires_explicit_implementation]] -@protocol Baz -@end - -@interface Quux --(void)g1 [[clang::ns_consumes_self]]; --(void)g2 __attribute__((ns_consumes_self)); --(void)h1: (int)x [[clang::ns_consumes_self]]; --(void)h2: (int)x __attribute__((ns_consumes_self)); --(void) [[clang::ns_consumes_self]] i1; --(void) __attribute__((ns_consumes_self)) i2; -@end +// RUN: %clang_cc1 -fsyntax-only -fdouble-square-bracket-attributes -triple x86_64-apple-macosx10.10.0 -verify %s +// expected-no-diagnostics + +@interface NSObject +@end + +[[clang::objc_exception]] +@interface Foo { + [[clang::iboutlet]] NSObject *h; +} +@property (readonly) [[clang::objc_returns_inner_pointer]] void *i, *j; +@property (readonly) [[clang::iboutlet]] NSObject *k; +@end + +[[clang::objc_runtime_name("name")]] @protocol Bar; + +[[clang::objc_protocol_requires_explicit_implementation]] +@protocol Baz +@end + +@interface Quux +-(void)g1 [[clang::ns_consumes_self]]; +-(void)g2 __attribute__((ns_consumes_self)); +-(void)h1: (int)x [[clang::ns_consumes_self]]; +-(void)h2: (int)x __attribute__((ns_consumes_self)); +-(void) [[clang::ns_consumes_self]] i1; +-(void) __attribute__((ns_consumes_self)) i2; +@end diff --git a/clang/test/Preprocessor/macro_vaopt_check.cpp b/clang/test/Preprocessor/macro_vaopt_check.cpp index 25a4564fba7e..fb52e9946af3 100644 --- a/clang/test/Preprocessor/macro_vaopt_check.cpp +++ b/clang/test/Preprocessor/macro_vaopt_check.cpp @@ -1,64 +1,64 @@ -// RUN: %clang_cc1 %s -Eonly -verify -Wno-all -pedantic -std=c++2a - -//expected-error@+1{{missing '('}} -#define V1(...) __VA_OPT__ -#undef V1 -// OK -#define V1(...) __VA_OPT__ () -#undef V1 - -//expected-warning@+1{{can only appear in the expansion of a variadic macro}} -#define V2() __VA_OPT__(x) -#undef V2 - -//expected-error@+2{{missing ')' after}} -//expected-note@+1{{to match this '('}} -#define V3(...) __VA_OPT__( -#undef V3 - -#define V4(...) __VA_OPT__(__VA_ARGS__) -#undef V4 - -//expected-error@+1{{nested}} -#define V5(...) __VA_OPT__(__VA_OPT__()) -#undef V5 - -//expected-error@+1{{not followed by}} -#define V1(...) __VA_OPT__ (#) -#undef V1 - -//expected-error@+1{{cannot appear at start}} -#define V1(...) __VA_OPT__ (##) -#undef V1 - -//expected-error@+1{{cannot appear at start}} -#define V1(...) __VA_OPT__ (## X) x -#undef V1 - -//expected-error@+1{{cannot appear at end}} -#define V1(...) y __VA_OPT__ (X ##) -#undef V1 - - -#define FOO(x,...) # __VA_OPT__(x) #x #__VA_OPT__(__VA_ARGS__) //OK - -//expected-error@+1{{not followed by a macro parameter}} -#define V1(...) __VA_OPT__(#) -#undef V1 - -//expected-error@+1{{cannot appear at start}} -#define V1(...) a __VA_OPT__(##) b -#undef V1 - -//expected-error@+1{{cannot appear at start}} -#define V1(...) a __VA_OPT__(a ## b) b __VA_OPT__(##) -#undef V1 - -#define V1(x,...) # __VA_OPT__(b x) // OK -#undef V1 - -//expected-error@+2{{missing ')' after}} -//expected-note@+1{{to match this '('}} -#define V1(...) __VA_OPT__ ((()) -#undef V1 - +// RUN: %clang_cc1 %s -Eonly -verify -Wno-all -pedantic -std=c++2a + +//expected-error@+1{{missing '('}} +#define V1(...) __VA_OPT__ +#undef V1 +// OK +#define V1(...) __VA_OPT__ () +#undef V1 + +//expected-warning@+1{{can only appear in the expansion of a variadic macro}} +#define V2() __VA_OPT__(x) +#undef V2 + +//expected-error@+2{{missing ')' after}} +//expected-note@+1{{to match this '('}} +#define V3(...) __VA_OPT__( +#undef V3 + +#define V4(...) __VA_OPT__(__VA_ARGS__) +#undef V4 + +//expected-error@+1{{nested}} +#define V5(...) __VA_OPT__(__VA_OPT__()) +#undef V5 + +//expected-error@+1{{not followed by}} +#define V1(...) __VA_OPT__ (#) +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) __VA_OPT__ (##) +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) __VA_OPT__ (## X) x +#undef V1 + +//expected-error@+1{{cannot appear at end}} +#define V1(...) y __VA_OPT__ (X ##) +#undef V1 + + +#define FOO(x,...) # __VA_OPT__(x) #x #__VA_OPT__(__VA_ARGS__) //OK + +//expected-error@+1{{not followed by a macro parameter}} +#define V1(...) __VA_OPT__(#) +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) a __VA_OPT__(##) b +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) a __VA_OPT__(a ## b) b __VA_OPT__(##) +#undef V1 + +#define V1(x,...) # __VA_OPT__(b x) // OK +#undef V1 + +//expected-error@+2{{missing ')' after}} +//expected-note@+1{{to match this '('}} +#define V1(...) __VA_OPT__ ((()) +#undef V1 + diff --git a/clang/test/SemaCXX/attr-gnu.cpp b/clang/test/SemaCXX/attr-gnu.cpp index c1972c076fc3..9eb42342df31 100644 --- a/clang/test/SemaCXX/attr-gnu.cpp +++ b/clang/test/SemaCXX/attr-gnu.cpp @@ -1,7 +1,7 @@ -// RUN: %clang_cc1 -std=gnu++17 -fsyntax-only -fms-compatibility -verify %s - -void f() { - // GNU-style attributes are prohibited in this position. +// RUN: %clang_cc1 -std=gnu++17 -fsyntax-only -fms-compatibility -verify %s + +void f() { + // GNU-style attributes are prohibited in this position. auto P = new int * __attribute__((vector_size(8))); // expected-error {{an attribute list cannot appear here}} \ // expected-error {{invalid vector element type 'int *'}} @@ -40,13 +40,13 @@ void tuTest1(Tu u); // expected-note {{candidate function not viable: no kn void tuTest2(Tu3 u); // expected-note {{candidate function not viable: no known conversion from 'int' to 'Tu3' for 1st argument}} void tu() { int x = 2; - tuTest1(x); // expected-error {{no matching function for call to 'tuTest1'}} - tuTest2(x); // expected-error {{no matching function for call to 'tuTest2'}} -} - -[[gnu::__const__]] int f2() { return 12; } -[[__gnu__::__const__]] int f3() { return 12; } -[[using __gnu__ : __const__]] int f4() { return 12; } - -static_assert(__has_cpp_attribute(gnu::__const__)); -static_assert(__has_cpp_attribute(__gnu__::__const__)); + tuTest1(x); // expected-error {{no matching function for call to 'tuTest1'}} + tuTest2(x); // expected-error {{no matching function for call to 'tuTest2'}} +} + +[[gnu::__const__]] int f2() { return 12; } +[[__gnu__::__const__]] int f3() { return 12; } +[[using __gnu__ : __const__]] int f4() { return 12; } + +static_assert(__has_cpp_attribute(gnu::__const__)); +static_assert(__has_cpp_attribute(__gnu__::__const__)); diff --git a/clang/test/SemaCXX/attr-non-x86-no_caller_saved_registers.cpp b/clang/test/SemaCXX/attr-non-x86-no_caller_saved_registers.cpp index 00fa5bd7336b..e31a16e3400d 100644 --- a/clang/test/SemaCXX/attr-non-x86-no_caller_saved_registers.cpp +++ b/clang/test/SemaCXX/attr-non-x86-no_caller_saved_registers.cpp @@ -1,29 +1,29 @@ -// RUN: %clang_cc1 -std=c++11 -triple armv7-unknown-linux-gnueabi -fsyntax-only -verify %s - -struct a { - int __attribute__((no_caller_saved_registers)) b; // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - static void foo(int *a) __attribute__((no_caller_saved_registers)) {} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} -}; - -struct a test __attribute__((no_caller_saved_registers)); // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - -__attribute__((no_caller_saved_registers(999))) void bar(int *) {} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - -__attribute__((no_caller_saved_registers)) void foo(int *){} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - -[[gnu::no_caller_saved_registers]] void foo2(int *) {} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - -typedef __attribute__((no_caller_saved_registers)) void (*foo3)(int *); // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - -typedef void (*foo5)(int *); - -int (*foo4)(double a, __attribute__((no_caller_saved_registers)) float b); // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - -int main(int argc, char **argv) { - void (*fp)(int *) = foo; - a::foo(&argc); - foo3 func = foo2; - func(&argc); - foo5 __attribute__((no_caller_saved_registers)) func2 = foo2; // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} - return 0; -} +// RUN: %clang_cc1 -std=c++11 -triple armv7-unknown-linux-gnueabi -fsyntax-only -verify %s + +struct a { + int __attribute__((no_caller_saved_registers)) b; // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + static void foo(int *a) __attribute__((no_caller_saved_registers)) {} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} +}; + +struct a test __attribute__((no_caller_saved_registers)); // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + +__attribute__((no_caller_saved_registers(999))) void bar(int *) {} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + +__attribute__((no_caller_saved_registers)) void foo(int *){} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + +[[gnu::no_caller_saved_registers]] void foo2(int *) {} // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + +typedef __attribute__((no_caller_saved_registers)) void (*foo3)(int *); // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + +typedef void (*foo5)(int *); + +int (*foo4)(double a, __attribute__((no_caller_saved_registers)) float b); // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + +int main(int argc, char **argv) { + void (*fp)(int *) = foo; + a::foo(&argc); + foo3 func = foo2; + func(&argc); + foo5 __attribute__((no_caller_saved_registers)) func2 = foo2; // expected-warning {{unknown attribute 'no_caller_saved_registers' ignored}} + return 0; +} diff --git a/clang/test/SemaCXX/attr-x86-no_caller_saved_registers.cpp b/clang/test/SemaCXX/attr-x86-no_caller_saved_registers.cpp index ec69e986144f..55500519c49e 100644 --- a/clang/test/SemaCXX/attr-x86-no_caller_saved_registers.cpp +++ b/clang/test/SemaCXX/attr-x86-no_caller_saved_registers.cpp @@ -1,33 +1,33 @@ -// RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-linux-gnu -fsyntax-only -verify %s - -struct a { - int b __attribute__((no_caller_saved_registers)); // expected-warning {{'no_caller_saved_registers' only applies to function types; type here is 'int'}} - static void foo(int *a) __attribute__((no_caller_saved_registers)) {} -}; - -struct a test __attribute__((no_caller_saved_registers)); // expected-warning {{'no_caller_saved_registers' only applies to function types; type here is 'struct a'}} - -__attribute__((no_caller_saved_registers(999))) void bar(int *) {} // expected-error {{'no_caller_saved_registers' attribute takes no arguments}} - -void __attribute__((no_caller_saved_registers)) foo(int *){} - -[[gnu::no_caller_saved_registers]] void foo2(int *) {} - -typedef __attribute__((no_caller_saved_registers)) void (*foo3)(int *); - -int (*foo4)(double a, __attribute__((no_caller_saved_registers)) float b); // expected-warning {{'no_caller_saved_registers' only applies to function types; type here is 'float'}} - -typedef void (*foo5)(int *); - -void foo6(){} // expected-note {{previous declaration is here}} - -void __attribute__((no_caller_saved_registers)) foo6(); // expected-error {{function declared with 'no_caller_saved_registers' attribute was previously declared without the 'no_caller_saved_registers' attribute}} - -int main(int argc, char **argv) { - void (*fp)(int *) = foo; // expected-error {{cannot initialize a variable of type 'void (*)(int *)' with an lvalue of type 'void (int *) __attribute__((no_caller_saved_registers))'}} - a::foo(&argc); - foo3 func = foo2; - func(&argc); - foo5 __attribute__((no_caller_saved_registers)) func2 = foo2; - return 0; -} +// RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-linux-gnu -fsyntax-only -verify %s + +struct a { + int b __attribute__((no_caller_saved_registers)); // expected-warning {{'no_caller_saved_registers' only applies to function types; type here is 'int'}} + static void foo(int *a) __attribute__((no_caller_saved_registers)) {} +}; + +struct a test __attribute__((no_caller_saved_registers)); // expected-warning {{'no_caller_saved_registers' only applies to function types; type here is 'struct a'}} + +__attribute__((no_caller_saved_registers(999))) void bar(int *) {} // expected-error {{'no_caller_saved_registers' attribute takes no arguments}} + +void __attribute__((no_caller_saved_registers)) foo(int *){} + +[[gnu::no_caller_saved_registers]] void foo2(int *) {} + +typedef __attribute__((no_caller_saved_registers)) void (*foo3)(int *); + +int (*foo4)(double a, __attribute__((no_caller_saved_registers)) float b); // expected-warning {{'no_caller_saved_registers' only applies to function types; type here is 'float'}} + +typedef void (*foo5)(int *); + +void foo6(){} // expected-note {{previous declaration is here}} + +void __attribute__((no_caller_saved_registers)) foo6(); // expected-error {{function declared with 'no_caller_saved_registers' attribute was previously declared without the 'no_caller_saved_registers' attribute}} + +int main(int argc, char **argv) { + void (*fp)(int *) = foo; // expected-error {{cannot initialize a variable of type 'void (*)(int *)' with an lvalue of type 'void (int *) __attribute__((no_caller_saved_registers))'}} + a::foo(&argc); + foo3 func = foo2; + func(&argc); + foo5 __attribute__((no_caller_saved_registers)) func2 = foo2; + return 0; +} diff --git a/clang/test/SemaCXX/compound-literal.cpp b/clang/test/SemaCXX/compound-literal.cpp index fbd4a00265e9..353be2cf48e4 100644 --- a/clang/test/SemaCXX/compound-literal.cpp +++ b/clang/test/SemaCXX/compound-literal.cpp @@ -1,110 +1,110 @@ -// RUN: %clang_cc1 -fsyntax-only -std=c++03 -verify -ast-dump %s > %t-03 -// RUN: FileCheck --input-file=%t-03 %s -// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify -ast-dump %s > %t-11 -// RUN: FileCheck --input-file=%t-11 %s -// RUN: FileCheck --input-file=%t-11 %s --check-prefix=CHECK-CXX11 - -// http://llvm.org/PR7905 -namespace PR7905 { -struct S; // expected-note {{forward declaration}} -void foo1() { - (void)(S[]) {{3}}; // expected-error {{array has incomplete element type}} -} - -template struct M { T m; }; -void foo2() { - (void)(M []) {{3}}; -} -} - -// Check compound literals mixed with C++11 list-initialization. -namespace brace_initializers { - struct POD { - int x, y; - }; - struct HasCtor { - HasCtor(int x, int y); - }; - struct HasDtor { - int x, y; - ~HasDtor(); - }; - struct HasCtorDtor { - HasCtorDtor(int x, int y); - ~HasCtorDtor(); - }; - - POD p = (POD){1, 2}; - // CHECK-NOT: CXXBindTemporaryExpr {{.*}} 'brace_initializers::POD' - // CHECK: CompoundLiteralExpr {{.*}} 'brace_initializers::POD' - // CHECK-NEXT: InitListExpr {{.*}} 'brace_initializers::POD' - // CHECK-NEXT: ConstantExpr {{.*}} - // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}} - // CHECK-NEXT: ConstantExpr {{.*}} - // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}} - - void test() { - (void)(POD){1, 2}; - // CHECK-NOT: CXXBindTemporaryExpr {{.*}} 'brace_initializers::POD' - // CHECK-NOT: ConstantExpr {{.*}} 'brace_initializers::POD' - // CHECK: CompoundLiteralExpr {{.*}} 'brace_initializers::POD' - // CHECK-NEXT: InitListExpr {{.*}} 'brace_initializers::POD' - // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}} - // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}} - - (void)(HasDtor){1, 2}; - // CHECK: CXXBindTemporaryExpr {{.*}} 'brace_initializers::HasDtor' - // CHECK-NEXT: CompoundLiteralExpr {{.*}} 'brace_initializers::HasDtor' - // CHECK-NEXT: InitListExpr {{.*}} 'brace_initializers::HasDtor' - // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}} - // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}} - -#if __cplusplus >= 201103L - (void)(HasCtor){1, 2}; - // CHECK-CXX11-NOT: CXXBindTemporaryExpr {{.*}} 'brace_initializers::HasCtor' - // CHECK-CXX11-NOT: ConstantExpr {{.*}} 'brace_initializers::HasCtor' - // CHECK-CXX11: CompoundLiteralExpr {{.*}} 'brace_initializers::HasCtor' - // CHECK-CXX11-NEXT: CXXTemporaryObjectExpr {{.*}} 'brace_initializers::HasCtor' - // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 1{{$}} - // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 2{{$}} - - (void)(HasCtorDtor){1, 2}; - // CHECK-CXX11: CXXBindTemporaryExpr {{.*}} 'brace_initializers::HasCtorDtor' - // CHECK-CXX11-NOT: ConstantExpr {{.*}} 'brace_initializers::HasCtorDtor' - // CHECK-CXX11: CompoundLiteralExpr {{.*}} 'brace_initializers::HasCtorDtor' - // CHECK-CXX11-NEXT: CXXTemporaryObjectExpr {{.*}} 'brace_initializers::HasCtorDtor' - // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 1{{$}} - // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 2{{$}} -#endif - } - - struct PrivateDtor { - int x, y; - private: - ~PrivateDtor(); // expected-note {{declared private here}} - }; - - void testPrivateDtor() { - (void)(PrivateDtor){1, 2}; // expected-error {{temporary of type 'brace_initializers::PrivateDtor' has private destructor}} - } -} - -// This doesn't necessarily need to be an error, but CodeGen can't handle it -// at the moment. -int PR17415 = (int){PR17415}; // expected-error {{initializer element is not a compile-time constant}} - -// Make sure we accept this. (Not sure if we actually should... but we do -// at the moment.) -template struct Value { }; -template -int &check_narrowed(Value); - -#if __cplusplus >= 201103L -// Compound literals in global lambdas have automatic storage duration -// and are not subject to the constant-initialization rules. -int computed_with_lambda = [] { - int x = 5; - int result = ((int[]) { x, x + 2, x + 4, x + 6 })[0]; - return result; -}(); -#endif +// RUN: %clang_cc1 -fsyntax-only -std=c++03 -verify -ast-dump %s > %t-03 +// RUN: FileCheck --input-file=%t-03 %s +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify -ast-dump %s > %t-11 +// RUN: FileCheck --input-file=%t-11 %s +// RUN: FileCheck --input-file=%t-11 %s --check-prefix=CHECK-CXX11 + +// http://llvm.org/PR7905 +namespace PR7905 { +struct S; // expected-note {{forward declaration}} +void foo1() { + (void)(S[]) {{3}}; // expected-error {{array has incomplete element type}} +} + +template struct M { T m; }; +void foo2() { + (void)(M []) {{3}}; +} +} + +// Check compound literals mixed with C++11 list-initialization. +namespace brace_initializers { + struct POD { + int x, y; + }; + struct HasCtor { + HasCtor(int x, int y); + }; + struct HasDtor { + int x, y; + ~HasDtor(); + }; + struct HasCtorDtor { + HasCtorDtor(int x, int y); + ~HasCtorDtor(); + }; + + POD p = (POD){1, 2}; + // CHECK-NOT: CXXBindTemporaryExpr {{.*}} 'brace_initializers::POD' + // CHECK: CompoundLiteralExpr {{.*}} 'brace_initializers::POD' + // CHECK-NEXT: InitListExpr {{.*}} 'brace_initializers::POD' + // CHECK-NEXT: ConstantExpr {{.*}} + // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}} + // CHECK-NEXT: ConstantExpr {{.*}} + // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}} + + void test() { + (void)(POD){1, 2}; + // CHECK-NOT: CXXBindTemporaryExpr {{.*}} 'brace_initializers::POD' + // CHECK-NOT: ConstantExpr {{.*}} 'brace_initializers::POD' + // CHECK: CompoundLiteralExpr {{.*}} 'brace_initializers::POD' + // CHECK-NEXT: InitListExpr {{.*}} 'brace_initializers::POD' + // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}} + // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}} + + (void)(HasDtor){1, 2}; + // CHECK: CXXBindTemporaryExpr {{.*}} 'brace_initializers::HasDtor' + // CHECK-NEXT: CompoundLiteralExpr {{.*}} 'brace_initializers::HasDtor' + // CHECK-NEXT: InitListExpr {{.*}} 'brace_initializers::HasDtor' + // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}} + // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}} + +#if __cplusplus >= 201103L + (void)(HasCtor){1, 2}; + // CHECK-CXX11-NOT: CXXBindTemporaryExpr {{.*}} 'brace_initializers::HasCtor' + // CHECK-CXX11-NOT: ConstantExpr {{.*}} 'brace_initializers::HasCtor' + // CHECK-CXX11: CompoundLiteralExpr {{.*}} 'brace_initializers::HasCtor' + // CHECK-CXX11-NEXT: CXXTemporaryObjectExpr {{.*}} 'brace_initializers::HasCtor' + // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 1{{$}} + // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 2{{$}} + + (void)(HasCtorDtor){1, 2}; + // CHECK-CXX11: CXXBindTemporaryExpr {{.*}} 'brace_initializers::HasCtorDtor' + // CHECK-CXX11-NOT: ConstantExpr {{.*}} 'brace_initializers::HasCtorDtor' + // CHECK-CXX11: CompoundLiteralExpr {{.*}} 'brace_initializers::HasCtorDtor' + // CHECK-CXX11-NEXT: CXXTemporaryObjectExpr {{.*}} 'brace_initializers::HasCtorDtor' + // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 1{{$}} + // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 2{{$}} +#endif + } + + struct PrivateDtor { + int x, y; + private: + ~PrivateDtor(); // expected-note {{declared private here}} + }; + + void testPrivateDtor() { + (void)(PrivateDtor){1, 2}; // expected-error {{temporary of type 'brace_initializers::PrivateDtor' has private destructor}} + } +} + +// This doesn't necessarily need to be an error, but CodeGen can't handle it +// at the moment. +int PR17415 = (int){PR17415}; // expected-error {{initializer element is not a compile-time constant}} + +// Make sure we accept this. (Not sure if we actually should... but we do +// at the moment.) +template struct Value { }; +template +int &check_narrowed(Value); + +#if __cplusplus >= 201103L +// Compound literals in global lambdas have automatic storage duration +// and are not subject to the constant-initialization rules. +int computed_with_lambda = [] { + int x = 5; + int result = ((int[]) { x, x + 2, x + 4, x + 6 })[0]; + return result; +}(); +#endif diff --git a/clang/test/SemaCXX/warn-redundant-move.cpp b/clang/test/SemaCXX/warn-redundant-move.cpp index 97f4a7c37baa..2bfc8c9312f0 100644 --- a/clang/test/SemaCXX/warn-redundant-move.cpp +++ b/clang/test/SemaCXX/warn-redundant-move.cpp @@ -1,116 +1,116 @@ -// RUN: %clang_cc1 -fsyntax-only -Wredundant-move -std=c++11 -verify %s -// RUN: %clang_cc1 -fsyntax-only -Wredundant-move -std=c++11 -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s -// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -ast-dump | FileCheck %s --check-prefix=CHECK-AST - -// definitions for std::move -namespace std { -inline namespace foo { -template struct remove_reference { typedef T type; }; -template struct remove_reference { typedef T type; }; -template struct remove_reference { typedef T type; }; - -template typename remove_reference::type &&move(T &&t); -} -} - -// test1 and test2 should not warn until after implementation of DR1579. -struct A {}; -struct B : public A {}; - -A test1(B b1) { - B b2; - return b1; - return b2; - return std::move(b1); - return std::move(b2); -} - -struct C { - C() {} - C(A) {} -}; - -C test2(A a1, B b1) { - A a2; - B b2; - - return a1; - return a2; - return b1; - return b2; - - return std::move(a1); - return std::move(a2); - return std::move(b1); - return std::move(b2); -} - -// Copy of tests above with types changed to reference types. -A test3(B& b1) { - B& b2 = b1; - return b1; - return b2; - return std::move(b1); - return std::move(b2); -} - -C test4(A& a1, B& b1) { - A& a2 = a1; - B& b2 = b1; - - return a1; - return a2; - return b1; - return b2; - - return std::move(a1); - return std::move(a2); - return std::move(b1); - return std::move(b2); -} - -// PR23819, case 2 -struct D {}; -D test5(D d) { - return d; - // Verify the implicit move from the AST dump - // CHECK-AST: ReturnStmt{{.*}}line:[[@LINE-2]] - // CHECK-AST-NEXT: CXXConstructExpr{{.*}}D{{.*}}void (D &&) - // CHECK-AST-NEXT: ImplicitCastExpr - // CHECK-AST-NEXT: DeclRefExpr{{.*}}ParmVar{{.*}}'d' - - return std::move(d); - // expected-warning@-1{{redundant move in return statement}} - // expected-note@-2{{remove std::move call here}} - // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:20}:"" - // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:21-[[@LINE-4]]:22}:"" -} - -namespace templates { - struct A {}; - struct B { B(A); }; - - // Warn once here since the type is not dependent. - template - A test1(A a) { - return std::move(a); - // expected-warning@-1{{redundant move in return statement}} - // expected-note@-2{{remove std::move call here}} - // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:12-[[@LINE-3]]:22}:"" - // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:23-[[@LINE-4]]:24}:"" - } - void run_test1() { - test1(A()); - test1(A()); - } - - // T1 and T2 may not be the same, the warning may not always apply. - template - T1 test2(T2 t) { - return std::move(t); - } - void run_test2() { - test2(A()); - test2(A()); - } -} +// RUN: %clang_cc1 -fsyntax-only -Wredundant-move -std=c++11 -verify %s +// RUN: %clang_cc1 -fsyntax-only -Wredundant-move -std=c++11 -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s +// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -ast-dump | FileCheck %s --check-prefix=CHECK-AST + +// definitions for std::move +namespace std { +inline namespace foo { +template struct remove_reference { typedef T type; }; +template struct remove_reference { typedef T type; }; +template struct remove_reference { typedef T type; }; + +template typename remove_reference::type &&move(T &&t); +} +} + +// test1 and test2 should not warn until after implementation of DR1579. +struct A {}; +struct B : public A {}; + +A test1(B b1) { + B b2; + return b1; + return b2; + return std::move(b1); + return std::move(b2); +} + +struct C { + C() {} + C(A) {} +}; + +C test2(A a1, B b1) { + A a2; + B b2; + + return a1; + return a2; + return b1; + return b2; + + return std::move(a1); + return std::move(a2); + return std::move(b1); + return std::move(b2); +} + +// Copy of tests above with types changed to reference types. +A test3(B& b1) { + B& b2 = b1; + return b1; + return b2; + return std::move(b1); + return std::move(b2); +} + +C test4(A& a1, B& b1) { + A& a2 = a1; + B& b2 = b1; + + return a1; + return a2; + return b1; + return b2; + + return std::move(a1); + return std::move(a2); + return std::move(b1); + return std::move(b2); +} + +// PR23819, case 2 +struct D {}; +D test5(D d) { + return d; + // Verify the implicit move from the AST dump + // CHECK-AST: ReturnStmt{{.*}}line:[[@LINE-2]] + // CHECK-AST-NEXT: CXXConstructExpr{{.*}}D{{.*}}void (D &&) + // CHECK-AST-NEXT: ImplicitCastExpr + // CHECK-AST-NEXT: DeclRefExpr{{.*}}ParmVar{{.*}}'d' + + return std::move(d); + // expected-warning@-1{{redundant move in return statement}} + // expected-note@-2{{remove std::move call here}} + // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:20}:"" + // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:21-[[@LINE-4]]:22}:"" +} + +namespace templates { + struct A {}; + struct B { B(A); }; + + // Warn once here since the type is not dependent. + template + A test1(A a) { + return std::move(a); + // expected-warning@-1{{redundant move in return statement}} + // expected-note@-2{{remove std::move call here}} + // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:12-[[@LINE-3]]:22}:"" + // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:23-[[@LINE-4]]:24}:"" + } + void run_test1() { + test1(A()); + test1(A()); + } + + // T1 and T2 may not be the same, the warning may not always apply. + template + T1 test2(T2 t) { + return std::move(t); + } + void run_test2() { + test2(A()); + test2(A()); + } +} diff --git a/clang/test/SemaCXX/warn-shadow.cpp b/clang/test/SemaCXX/warn-shadow.cpp index b060800e7768..f4a904b7ed37 100644 --- a/clang/test/SemaCXX/warn-shadow.cpp +++ b/clang/test/SemaCXX/warn-shadow.cpp @@ -59,13 +59,13 @@ class A { // expected-warning-re@+1 4 {{constructor parameter 'f{{[0-4]}}' shadows the field 'f{{[0-9]}}' of 'A'}} A(int f1, int f2, int f3, int f4, double overload_dummy) {} - void test() { - char *field; // expected-warning {{declaration shadows a field of 'A'}} - char *data; // expected-warning {{declaration shadows a static data member of 'A'}} + void test() { + char *field; // expected-warning {{declaration shadows a field of 'A'}} + char *data; // expected-warning {{declaration shadows a static data member of 'A'}} char *a1; // no warning - char *a2; // no warning - char *jj; // no warning - char *jjj; // no warning + char *a2; // no warning + char *jj; // no warning + char *jjj; // no warning } void test2() { @@ -196,14 +196,14 @@ void avoidWarningWhenRedefining(int b) { // expected-note {{previous definition int k; // expected-note {{previous definition is here}} typedef int k; // expected-error {{redefinition of 'k'}} - using l=char; // no warning or error. - using l=char; // no warning or error. - typedef char l; // no warning or error. + using l=char; // no warning or error. + using l=char; // no warning or error. + typedef char l; // no warning or error. typedef char n; // no warning or error. typedef char n; // no warning or error. - using n=char; // no warning or error. -} + using n=char; // no warning or error. +} } @@ -219,42 +219,42 @@ void f(int a) { struct A { void g(int a) {} A() { int a; } - }; -} -} - -namespace PR34120 { -struct A { - int B; // expected-note 2 {{declared here}} -}; - -class C : public A { - void D(int B) {} // expected-warning {{parameter 'B' shadows member inherited from type 'A'}} - void E() { - extern void f(int B); // Ok - } - void F(int B); // Ok, declaration; not definition. - void G(int B); -}; - -void C::G(int B) { // expected-warning {{parameter 'B' shadows member inherited from type 'A'}} -} - -class Private { - int B; -}; -class Derived : Private { - void D(int B) {} // Ok -}; - -struct Static { - static int B; -}; - -struct Derived2 : Static { - void D(int B) {} -}; -} + }; +} +} + +namespace PR34120 { +struct A { + int B; // expected-note 2 {{declared here}} +}; + +class C : public A { + void D(int B) {} // expected-warning {{parameter 'B' shadows member inherited from type 'A'}} + void E() { + extern void f(int B); // Ok + } + void F(int B); // Ok, declaration; not definition. + void G(int B); +}; + +void C::G(int B) { // expected-warning {{parameter 'B' shadows member inherited from type 'A'}} +} + +class Private { + int B; +}; +class Derived : Private { + void D(int B) {} // Ok +}; + +struct Static { + static int B; +}; + +struct Derived2 : Static { + void D(int B) {} +}; +} int PR24718; enum class X { PR24718 }; // Ok, not shadowing diff --git a/clang/test/SemaObjCXX/block-cleanup.mm b/clang/test/SemaObjCXX/block-cleanup.mm index 56bbf952d967..53b2c224ab5e 100644 --- a/clang/test/SemaObjCXX/block-cleanup.mm +++ b/clang/test/SemaObjCXX/block-cleanup.mm @@ -1,16 +1,16 @@ -// RUN: %clang_cc1 -triple x86_64-apple-macosx10.11.0 -std=gnu++11 -o /dev/null -x objective-c++ -fblocks -ast-dump %s 2>&1 | FileCheck %s - -// CHECK: -FunctionDecl {{.*}} test 'id ()' -// CHECK-NEXT: -CompoundStmt -// CHECK-NEXT: -ReturnStmt -// CHECK-NEXT: -ExprWithCleanups -// CHECK-NEXT: -cleanup Block -// CHECK-NEXT: -cleanup Block - -@interface NSDictionary -+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; -@end - -id test() { - return @{@"a": [](){}, @"b": [](){}}; -} +// RUN: %clang_cc1 -triple x86_64-apple-macosx10.11.0 -std=gnu++11 -o /dev/null -x objective-c++ -fblocks -ast-dump %s 2>&1 | FileCheck %s + +// CHECK: -FunctionDecl {{.*}} test 'id ()' +// CHECK-NEXT: -CompoundStmt +// CHECK-NEXT: -ReturnStmt +// CHECK-NEXT: -ExprWithCleanups +// CHECK-NEXT: -cleanup Block +// CHECK-NEXT: -cleanup Block + +@interface NSDictionary ++ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; +@end + +id test() { + return @{@"a": [](){}, @"b": [](){}}; +} diff --git a/clang/test/SemaTemplate/default-expr-arguments-3.cpp b/clang/test/SemaTemplate/default-expr-arguments-3.cpp index 09fb7b290a1a..4d04209e110b 100644 --- a/clang/test/SemaTemplate/default-expr-arguments-3.cpp +++ b/clang/test/SemaTemplate/default-expr-arguments-3.cpp @@ -1,55 +1,55 @@ -// RUN: %clang_cc1 -std=c++14 -verify -ast-dump %s | FileCheck %s -// expected-no-diagnostics - -// CHECK: FunctionDecl {{.*}} used func 'void ()' -// CHECK-NEXT: TemplateArgument type 'int' -// CHECK: LambdaExpr {{.*}} '(lambda at -// CHECK: ParmVarDecl {{.*}} used f 'foo' cinit -// CHECK-NEXT: DeclRefExpr {{.*}} 'foo' EnumConstant {{.*}} 'a' 'foo' - -namespace PR28795 { - template - void func() { - enum class foo { a, b }; - auto bar = [](foo f = foo::a) { return f; }; - bar(); - } - - void foo() { - func(); - } -} - -// CHECK: ClassTemplateSpecializationDecl {{.*}} struct class2 definition -// CHECK: TemplateArgument type 'int' -// CHECK: LambdaExpr {{.*}} '(lambda at -// CHECK: ParmVarDecl {{.*}} used f 'foo' cinit -// CHECK-NEXT: DeclRefExpr {{.*}} 'foo' EnumConstant {{.*}} 'a' 'foo' - -// Template struct case: -template struct class2 { - void bar() { - enum class foo { a, b }; - [](foo f = foo::a) { return f; }(); - } -}; - -template struct class2; - -// CHECK: FunctionTemplateDecl {{.*}} f1 -// CHECK-NEXT: TemplateTypeParmDecl {{.*}} typename depth 0 index 0 T -// CHECK-NEXT: FunctionDecl {{.*}} f1 'void ()' -// CHECK: FunctionDecl {{.*}} f1 'void ()' -// CHECK-NEXT: TemplateArgument type 'int' -// CHECK: ParmVarDecl {{.*}} n 'foo' cinit -// CHECK-NEXT: DeclRefExpr {{.*}} 'foo' EnumConstant {{.*}} 'a' 'foo' - -template -void f1() { - enum class foo { a, b }; - struct S { - int g1(foo n = foo::a); - }; -} - -template void f1(); +// RUN: %clang_cc1 -std=c++14 -verify -ast-dump %s | FileCheck %s +// expected-no-diagnostics + +// CHECK: FunctionDecl {{.*}} used func 'void ()' +// CHECK-NEXT: TemplateArgument type 'int' +// CHECK: LambdaExpr {{.*}} '(lambda at +// CHECK: ParmVarDecl {{.*}} used f 'foo' cinit +// CHECK-NEXT: DeclRefExpr {{.*}} 'foo' EnumConstant {{.*}} 'a' 'foo' + +namespace PR28795 { + template + void func() { + enum class foo { a, b }; + auto bar = [](foo f = foo::a) { return f; }; + bar(); + } + + void foo() { + func(); + } +} + +// CHECK: ClassTemplateSpecializationDecl {{.*}} struct class2 definition +// CHECK: TemplateArgument type 'int' +// CHECK: LambdaExpr {{.*}} '(lambda at +// CHECK: ParmVarDecl {{.*}} used f 'foo' cinit +// CHECK-NEXT: DeclRefExpr {{.*}} 'foo' EnumConstant {{.*}} 'a' 'foo' + +// Template struct case: +template struct class2 { + void bar() { + enum class foo { a, b }; + [](foo f = foo::a) { return f; }(); + } +}; + +template struct class2; + +// CHECK: FunctionTemplateDecl {{.*}} f1 +// CHECK-NEXT: TemplateTypeParmDecl {{.*}} typename depth 0 index 0 T +// CHECK-NEXT: FunctionDecl {{.*}} f1 'void ()' +// CHECK: FunctionDecl {{.*}} f1 'void ()' +// CHECK-NEXT: TemplateArgument type 'int' +// CHECK: ParmVarDecl {{.*}} n 'foo' cinit +// CHECK-NEXT: DeclRefExpr {{.*}} 'foo' EnumConstant {{.*}} 'a' 'foo' + +template +void f1() { + enum class foo { a, b }; + struct S { + int g1(foo n = foo::a); + }; +} + +template void f1(); diff --git a/clang/tools/clang-format-vs/ClangFormat.sln b/clang/tools/clang-format-vs/ClangFormat.sln index 15085c8f4f1f..46d742bce3f0 100644 --- a/clang/tools/clang-format-vs/ClangFormat.sln +++ b/clang/tools/clang-format-vs/ClangFormat.sln @@ -1,22 +1,22 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26228.12 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClangFormat", "ClangFormat\ClangFormat.csproj", "{7FD1783E-2D31-4D05-BF23-6EBE1B42B608}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26228.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClangFormat", "ClangFormat\ClangFormat.csproj", "{7FD1783E-2D31-4D05-BF23-6EBE1B42B608}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FD1783E-2D31-4D05-BF23-6EBE1B42B608}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/clang/tools/clang-format-vs/ClangFormat/ClangFormat.csproj b/clang/tools/clang-format-vs/ClangFormat/ClangFormat.csproj index 333c7b1b1c78..e5b7ec008a1a 100644 --- a/clang/tools/clang-format-vs/ClangFormat/ClangFormat.csproj +++ b/clang/tools/clang-format-vs/ClangFormat/ClangFormat.csproj @@ -1,261 +1,261 @@ - - - - - Debug - AnyCPU - 2.0 - {7FD1783E-2D31-4D05-BF23-6EBE1B42B608} - {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - Properties - LLVM.ClangFormat - ClangFormat - true - Key.snk - v4.0 - 15.0 - - - - - 4.0 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - true - false - - - - True - - - True - - - - ..\packages\VSSDK.CoreUtility.10.0.4\lib\net40\Microsoft.VisualStudio.CoreUtility.dll - False - - - ..\packages\VSSDK.Editor.10.0.4\lib\net40\Microsoft.VisualStudio.Editor.dll - False - - - ..\packages\VSSDK.OLE.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.OLE.Interop.dll - True - False - - - ..\packages\VSSDK.Shell.10.10.0.3\lib\net40\Microsoft.VisualStudio.Shell.10.0.dll - False - - - ..\packages\VSSDK.Shell.Immutable.10.10.0.3\lib\net40\Microsoft.VisualStudio.Shell.Immutable.10.0.dll - True - - - ..\packages\VSSDK.Shell.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.dll - True - False - - - ..\packages\VSSDK.Shell.Interop.8.8.0.3\lib\net20\Microsoft.VisualStudio.Shell.Interop.8.0.dll - True - False - - - - ..\packages\VSSDK.Shell.Interop.9.9.0.3\lib\net20\Microsoft.VisualStudio.Shell.Interop.9.0.dll - True - False - - - ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.Data.dll - False - - - ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.Logic.dll - False - - - ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.UI.dll - False - - - ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.UI.Wpf.dll - False - - - False - - - ..\packages\VSSDK.TextManager.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.8.0.dll - True - False - - - - - ..\packages\VSSDK.DTE.7.0.3\lib\net20\stdole.dll - False - - - - - - - - - - - - - - - {1CBA492E-7263-47BB-87FE-639000619B15} - 8 - 0 - 0 - primary - False - False - - - {00020430-0000-0000-C000-000000000046} - 2 - 0 - 0 - primary - False - False - - - - - - True - True - Resources.resx - - - - Component - - - - - - - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - true - VSPackage - - - - - - Designer - - - Designer - - - - - Menus.ctmenu - - - - - - - - true - - - true - - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 4.5 - true - - - - true - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - - if not exist $(ProjectDir)Key.snk ("$(FrameworkSDKDir)Bin\NETFX 4.6 Tools\sn.exe" -k $(ProjectDir)Key.snk) - - - + + + + + Debug + AnyCPU + 2.0 + {7FD1783E-2D31-4D05-BF23-6EBE1B42B608} + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Library + Properties + LLVM.ClangFormat + ClangFormat + true + Key.snk + v4.0 + 15.0 + + + + + 4.0 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + false + + + + True + + + True + + + + ..\packages\VSSDK.CoreUtility.10.0.4\lib\net40\Microsoft.VisualStudio.CoreUtility.dll + False + + + ..\packages\VSSDK.Editor.10.0.4\lib\net40\Microsoft.VisualStudio.Editor.dll + False + + + ..\packages\VSSDK.OLE.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.OLE.Interop.dll + True + False + + + ..\packages\VSSDK.Shell.10.10.0.3\lib\net40\Microsoft.VisualStudio.Shell.10.0.dll + False + + + ..\packages\VSSDK.Shell.Immutable.10.10.0.3\lib\net40\Microsoft.VisualStudio.Shell.Immutable.10.0.dll + True + + + ..\packages\VSSDK.Shell.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.dll + True + False + + + ..\packages\VSSDK.Shell.Interop.8.8.0.3\lib\net20\Microsoft.VisualStudio.Shell.Interop.8.0.dll + True + False + + + + ..\packages\VSSDK.Shell.Interop.9.9.0.3\lib\net20\Microsoft.VisualStudio.Shell.Interop.9.0.dll + True + False + + + ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.Data.dll + False + + + ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.Logic.dll + False + + + ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.UI.dll + False + + + ..\packages\VSSDK.Text.10.0.4\lib\net40\Microsoft.VisualStudio.Text.UI.Wpf.dll + False + + + False + + + ..\packages\VSSDK.TextManager.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.8.0.dll + True + False + + + + + ..\packages\VSSDK.DTE.7.0.3\lib\net20\stdole.dll + False + + + + + + + + + + + + + + + {1CBA492E-7263-47BB-87FE-639000619B15} + 8 + 0 + 0 + primary + False + False + + + {00020430-0000-0000-C000-000000000046} + 2 + 0 + 0 + primary + False + False + + + + + + True + True + Resources.resx + + + + Component + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + true + VSPackage + + + + + + Designer + + + Designer + + + + + Menus.ctmenu + + + + + + + + true + + + true + + + + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + true + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + if not exist $(ProjectDir)Key.snk ("$(FrameworkSDKDir)Bin\NETFX 4.6 Tools\sn.exe" -k $(ProjectDir)Key.snk) + + + diff --git a/clang/tools/clang-format-vs/ClangFormat/ClangFormat.vsct b/clang/tools/clang-format-vs/ClangFormat/ClangFormat.vsct index 535dd6e026c8..798957740d54 100644 --- a/clang/tools/clang-format-vs/ClangFormat/ClangFormat.vsct +++ b/clang/tools/clang-format-vs/ClangFormat/ClangFormat.vsct @@ -1,127 +1,127 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/clang/tools/clang-format-vs/ClangFormat/Properties/AssemblyInfo.cs b/clang/tools/clang-format-vs/ClangFormat/Properties/AssemblyInfo.cs index 58dad21791bb..b1cef49414b5 100644 --- a/clang/tools/clang-format-vs/ClangFormat/Properties/AssemblyInfo.cs +++ b/clang/tools/clang-format-vs/ClangFormat/Properties/AssemblyInfo.cs @@ -1,33 +1,33 @@ -using System; -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ClangFormat")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("LLVM")] -[assembly: AssemblyProduct("ClangFormat")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: ComVisible(false)] -[assembly: CLSCompliant(false)] -[assembly: NeutralResourcesLanguage("en-US")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly: AssemblyVersion("1.1.0.0")] -[assembly: AssemblyFileVersion("1.1.0.0")] +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ClangFormat")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("LLVM")] +[assembly: AssemblyProduct("ClangFormat")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: ComVisible(false)] +[assembly: CLSCompliant(false)] +[assembly: NeutralResourcesLanguage("en-US")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.1.0.0")] +[assembly: AssemblyFileVersion("1.1.0.0")] diff --git a/clang/tools/clang-format-vs/ClangFormat/Resources.Designer.cs b/clang/tools/clang-format-vs/ClangFormat/Resources.Designer.cs index e9c051988f68..e3129b3db83a 100644 --- a/clang/tools/clang-format-vs/ClangFormat/Resources.Designer.cs +++ b/clang/tools/clang-format-vs/ClangFormat/Resources.Designer.cs @@ -1,63 +1,63 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace LLVM.ClangFormat { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LLVM.ClangFormat.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace LLVM.ClangFormat { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LLVM.ClangFormat.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/clang/tools/clang-format-vs/ClangFormat/Resources.resx b/clang/tools/clang-format-vs/ClangFormat/Resources.resx index 891c592b4f31..352987aa07bc 100644 --- a/clang/tools/clang-format-vs/ClangFormat/Resources.resx +++ b/clang/tools/clang-format-vs/ClangFormat/Resources.resx @@ -1,129 +1,129 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/clang/tools/clang-format-vs/ClangFormat/VSPackage.resx b/clang/tools/clang-format-vs/ClangFormat/VSPackage.resx index 6d64e89ab8d6..81102d38a07a 100644 --- a/clang/tools/clang-format-vs/ClangFormat/VSPackage.resx +++ b/clang/tools/clang-format-vs/ClangFormat/VSPackage.resx @@ -1,140 +1,140 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ClangFormat - - - Formats code by calling the clang-format executable. - - - Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ClangFormat + + + Formats code by calling the clang-format executable. + + + Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/clang/tools/clang-format-vs/README.txt b/clang/tools/clang-format-vs/README.txt index cb4c27365087..84e0b451f018 100644 --- a/clang/tools/clang-format-vs/README.txt +++ b/clang/tools/clang-format-vs/README.txt @@ -1,51 +1,51 @@ -This directory contains a VSPackage project to generate a Visual Studio extension -for clang-format. - -Build prerequisites are: -- Visual Studio 2015 -- Extensions SDK (you'll be prompted to install it if you open ClangFormat.sln) - -The extension is built using CMake to generate the usual LLVM.sln by setting -the following CMake vars: - -- BUILD_CLANG_FORMAT_VS_PLUGIN=ON - -- NUGET_EXE_PATH=path/to/nuget_dir (unless nuget.exe is already available in PATH) - -example: - cd /d C:\code\llvm - mkdir build & cd build - cmake -DBUILD_CLANG_FORMAT_VS_PLUGIN=ON -DNUGET_EXE_PATH=C:\nuget .. - -Once LLVM.sln is generated, build the clang_format_vsix target, which will build -ClangFormat.sln, the C# extension application. - -The CMake build will copy clang-format.exe and LICENSE.TXT into the ClangFormat/ -directory so they can be bundled with the plug-in, as well as creating -ClangFormat/source.extension.vsixmanifest. Once the plug-in has been built with -CMake once, it can be built manually from the ClangFormat.sln solution in Visual -Studio. - -=========== - Debugging -=========== - -Once you've built the clang_format_vsix project from LLVM.sln at least once, -open ClangFormat.sln in Visual Studio, then: - -- Make sure the "Debug" target is selected -- Open the ClangFormat project properties -- Select the Debug tab -- Set "Start external program:" to where your devenv.exe is installed. Typically - it's "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" -- Set "Command line arguments" to: /rootsuffix Exp -- You can now set breakpoints if you like -- Press F5 to build and run with debugger - -If all goes well, a new instance of Visual Studio will be launched in a special -mode where it uses the experimental hive instead of the normal configuration hive. -By default, when you build a VSIX project in Visual Studio, it auto-registers the -extension in the experimental hive, allowing you to test it. In the new Visual Studio -instance, open or create a C++ solution, and you should now see the Clang Format -entries in the Tool menu. You can test it out, and any breakpoints you set will be -hit where you can debug as usual. +This directory contains a VSPackage project to generate a Visual Studio extension +for clang-format. + +Build prerequisites are: +- Visual Studio 2015 +- Extensions SDK (you'll be prompted to install it if you open ClangFormat.sln) + +The extension is built using CMake to generate the usual LLVM.sln by setting +the following CMake vars: + +- BUILD_CLANG_FORMAT_VS_PLUGIN=ON + +- NUGET_EXE_PATH=path/to/nuget_dir (unless nuget.exe is already available in PATH) + +example: + cd /d C:\code\llvm + mkdir build & cd build + cmake -DBUILD_CLANG_FORMAT_VS_PLUGIN=ON -DNUGET_EXE_PATH=C:\nuget .. + +Once LLVM.sln is generated, build the clang_format_vsix target, which will build +ClangFormat.sln, the C# extension application. + +The CMake build will copy clang-format.exe and LICENSE.TXT into the ClangFormat/ +directory so they can be bundled with the plug-in, as well as creating +ClangFormat/source.extension.vsixmanifest. Once the plug-in has been built with +CMake once, it can be built manually from the ClangFormat.sln solution in Visual +Studio. + +=========== + Debugging +=========== + +Once you've built the clang_format_vsix project from LLVM.sln at least once, +open ClangFormat.sln in Visual Studio, then: + +- Make sure the "Debug" target is selected +- Open the ClangFormat project properties +- Select the Debug tab +- Set "Start external program:" to where your devenv.exe is installed. Typically + it's "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" +- Set "Command line arguments" to: /rootsuffix Exp +- You can now set breakpoints if you like +- Press F5 to build and run with debugger + +If all goes well, a new instance of Visual Studio will be launched in a special +mode where it uses the experimental hive instead of the normal configuration hive. +By default, when you build a VSIX project in Visual Studio, it auto-registers the +extension in the experimental hive, allowing you to test it. In the new Visual Studio +instance, open or create a C++ solution, and you should now see the Clang Format +entries in the Tool menu. You can test it out, and any breakpoints you set will be +hit where you can debug as usual. diff --git a/clang/tools/scan-build/bin/scan-build.bat b/clang/tools/scan-build/bin/scan-build.bat index f765f205b8ec..77be6746318f 100644 --- a/clang/tools/scan-build/bin/scan-build.bat +++ b/clang/tools/scan-build/bin/scan-build.bat @@ -1 +1 @@ -perl -S scan-build %* +perl -S scan-build %* diff --git a/clang/tools/scan-build/libexec/c++-analyzer.bat b/clang/tools/scan-build/libexec/c++-analyzer.bat index 83c7172456a5..69f048a91671 100644 --- a/clang/tools/scan-build/libexec/c++-analyzer.bat +++ b/clang/tools/scan-build/libexec/c++-analyzer.bat @@ -1 +1 @@ -perl -S c++-analyzer %* +perl -S c++-analyzer %* diff --git a/clang/tools/scan-build/libexec/ccc-analyzer.bat b/clang/tools/scan-build/libexec/ccc-analyzer.bat index fdd36f3bdd04..2a85376eb82b 100644 --- a/clang/tools/scan-build/libexec/ccc-analyzer.bat +++ b/clang/tools/scan-build/libexec/ccc-analyzer.bat @@ -1 +1 @@ -perl -S ccc-analyzer %* +perl -S ccc-analyzer %* diff --git a/clang/www/analyzer/images/analyzer_html.png b/clang/www/analyzer/images/analyzer_html.png index decc611926123ce283cff51a548f0570a4b25507..607ea1882e71b4a9b64390b7fe1a8c9304449f01 100644 GIT binary patch delta 30 kcmezHhWYawX4cLCKX=}ZEEejFyqj&*Pgw#fw#2Nd0JzW!qyPW_ delta 25 hcmezThWW!AW|qzXKlhES7V4Yr)K6J%=1k0*3ILR23V;9r diff --git a/clang/www/analyzer/images/analyzer_xcode.png b/clang/www/analyzer/images/analyzer_xcode.png index 6d8e5d29daa4509e0ff9a101d7c2c3b3622a4b80..84c69809e8c391c611198700ceff3da8047d9219 100644 GIT binary patch delta 27 jcmeBQ%Q|r_D{E(fpF3|O%T^Y~cg&2u+dnZg&J6+pfP4tw delta 24 gcmbQZmbHH^D@$j9pL-+gR#wJ$%-g>(GtLbH0B;ot#{d8T diff --git a/clang/www/analyzer/images/example_attribute_nonnull.png b/clang/www/analyzer/images/example_attribute_nonnull.png index e7bd30b302e7835eab0c2642adfeea88d260c9d5..919af6174291b96887e79f11ff62d29235eee6e7 100644 GIT binary patch delta 16 XcmX?nnDNMAM%K;%KX=}ZEc+7yI~@jP delta 15 WcmX?dnDOvoMwZS1KlhES`x5~+Rt8uA diff --git a/clang/www/analyzer/images/example_cf_returns_retained.png b/clang/www/analyzer/images/example_cf_returns_retained.png index bf7356193a5ed2a617d5cf2fe8f5dbda5aeb5d79..4bee49945ef133bdc0fa66560b9171967492e01b 100644 GIT binary patch delta 23 ecmZp>!qjnviM2Dp&z*N8OTPjm@8-!0#hn0T%m@zv delta 20 bcmeCU!qj$!iKR2Z&wV3nzryCJ3dNlORFMbv diff --git a/clang/www/analyzer/images/example_custom_assert.png b/clang/www/analyzer/images/example_custom_assert.png index ea1fe3343274f1a202265f79cbb19a9263f49fd1..a56bb8962453feadde7999beb0a61fca3f89e7fa 100644 GIT binary patch delta 16 XcmZqO$=J4&k+n0x&z*N8OJfWGGKd9| delta 15 WcmZqM$=JG+k)<=h&wV3nV+;T;Q3Ztn diff --git a/clang/www/analyzer/images/example_ns_returns_retained.png b/clang/www/analyzer/images/example_ns_returns_retained.png index e028a393894aa5e207dd07801befc51ad981e1eb..61316e19fee2ae63e54dc2aa14ba5944e5bb64c8 100644 GIT binary patch delta 23 ecmcbzo9WtaCf3dXKX=}ZEVXfryqg>2g6#os8wh6r delta 20 bcmcb%o9W7KCYH_sKlhESwQ-x9i*MwZS1KlhESOOgRItp*VQ diff --git a/clang/www/analyzer/images/scan_build_cmd.png b/clang/www/analyzer/images/scan_build_cmd.png index 9f302486d6acf0fd279a62907d62f36d276e4724..464fd4e129a2088c150577a8fd52cc302bb90ee1 100644 GIT binary patch delta 16 XcmaFzobl;%M%K;%KX=}ZEDwqSLiz_H delta 15 WcmaF*obkzXMwZS1KlhES4~hXjsRtDR diff --git a/clang/www/carbon-compile.png b/clang/www/carbon-compile.png index 5941f27be02a14d33856818478be30c0ae2945a9..e8516c7055bb220668f86e87cfecd0c54fa62f96 100644 GIT binary patch delta 16 XcmbQblX2QkM%K;%KX=}ZEE8h@G