summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2012-01-23 04:01:33 +0000
committerNico Weber <nicolasweber@gmx.de>2012-01-23 04:01:33 +0000
commit323076f439e0ce2c59fcb7cca2a6778d10111a4d (patch)
treebea12ca9877775d33c669123a8b07a4f9a152414
parentabf456e32037a39a3f8e95cc3ec3a0435f3800d3 (diff)
downloadbcm5719-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.cpp6
-rw-r--r--clang/test/SemaCXX/MicrosoftCompatibility.cpp21
-rw-r--r--clang/test/SemaCXX/microsoft-cxx0x.cpp23
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;
- }
-}
OpenPOWER on IntegriCloud