diff options
author | Nico Weber <nicolasweber@gmx.de> | 2012-01-23 04:01:33 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2012-01-23 04:01:33 +0000 |
commit | 323076f439e0ce2c59fcb7cca2a6778d10111a4d (patch) | |
tree | bea12ca9877775d33c669123a8b07a4f9a152414 | |
parent | abf456e32037a39a3f8e95cc3ec3a0435f3800d3 (diff) | |
download | bcm5719-llvm-323076f439e0ce2c59fcb7cca2a6778d10111a4d.tar.gz bcm5719-llvm-323076f439e0ce2c59fcb7cca2a6778d10111a4d.zip |
Eli says this should check MicrosoftMode instead.
Also change a || that I accidentally changed to && back to ||.
llvm-svn: 148677
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 6 | ||||
-rw-r--r-- | clang/test/SemaCXX/MicrosoftCompatibility.cpp | 21 | ||||
-rw-r--r-- | clang/test/SemaCXX/microsoft-cxx0x.cpp | 23 |
3 files changed, 24 insertions, 26 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 1371b35ed49..983e815f604 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -7852,8 +7852,8 @@ CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) { // there is no user-declared move assignment operator, a copy assignment // operator is implicitly declared as defaulted. if ((ClassDecl->hasUserDeclaredMoveConstructor() && - !getLangOptions().MicrosoftExt) || - ClassDecl->hasUserDeclaredMoveAssignment() && + !getLangOptions().MicrosoftMode) || + ClassDecl->hasUserDeclaredMoveAssignment() || ShouldDeleteCopyAssignmentOperator(CopyAssignment)) CopyAssignment->setDeletedAsWritten(); @@ -8758,7 +8758,7 @@ CXXConstructorDecl *Sema::DeclareImplicitCopyConstructor( // declared as defaulted. if (ClassDecl->hasUserDeclaredMoveConstructor() || (ClassDecl->hasUserDeclaredMoveAssignment() && - !getLangOptions().MicrosoftExt) || + !getLangOptions().MicrosoftMode) || ShouldDeleteSpecialMember(CopyConstructor, CXXCopyConstructor)) CopyConstructor->setDeletedAsWritten(); diff --git a/clang/test/SemaCXX/MicrosoftCompatibility.cpp b/clang/test/SemaCXX/MicrosoftCompatibility.cpp index ad11b16cce0..9547a275f8e 100644 --- a/clang/test/SemaCXX/MicrosoftCompatibility.cpp +++ b/clang/test/SemaCXX/MicrosoftCompatibility.cpp @@ -68,7 +68,28 @@ int jump_over_indirect_goto() { } +namespace PR11826 { + struct pair { + pair(int v) { } + void operator=(pair&& rhs) { } + }; + void f() { + pair p0(3); + pair p = p0; + } +} +namespace PR11826_for_symmetry { + struct pair { + pair(int v) { } + pair(pair&& rhs) { } + }; + void f() { + pair p0(3); + pair p(4); + p = p0; + } +} namespace ms_using_declaration_bug {
diff --git a/clang/test/SemaCXX/microsoft-cxx0x.cpp b/clang/test/SemaCXX/microsoft-cxx0x.cpp index a0dbb75e079..3b9bbefc0cd 100644 --- a/clang/test/SemaCXX/microsoft-cxx0x.cpp +++ b/clang/test/SemaCXX/microsoft-cxx0x.cpp @@ -6,26 +6,3 @@ struct A { }; int b = 3; A var = { b }; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - -namespace PR11826 { - struct pair { - pair(int v) { } - void operator=(pair&& rhs) { } - }; - void f() { - pair p0(3); - pair p = p0; - } -} - -namespace PR11826_for_symmetry { - struct pair { - pair(int v) { } - pair(pair&& rhs) { } - }; - void f() { - pair p0(3); - pair p(4); - p = p0; - } -} |