summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclCXX.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-07-02 23:41:54 +0000
committerDouglas Gregor <dgregor@apple.com>2010-07-02 23:41:54 +0000
commita6d695057cbebb1b08e0f4a9dd3730e4c3ecf9da (patch)
tree2004b481b6a3908a1435ced5c8ae899ad38d444e /clang/lib/AST/DeclCXX.cpp
parent3701fcd759fc1b7f55c2de06ce715edcea71053f (diff)
downloadbcm5719-llvm-a6d695057cbebb1b08e0f4a9dd3730e4c3ecf9da.tar.gz
bcm5719-llvm-a6d695057cbebb1b08e0f4a9dd3730e4c3ecf9da.zip
Lazily declare implicit copy constructors.
llvm-svn: 107543
Diffstat (limited to 'clang/lib/AST/DeclCXX.cpp')
-rw-r--r--clang/lib/AST/DeclCXX.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp
index b54f0e2ca60..4b1909e57c6 100644
--- a/clang/lib/AST/DeclCXX.cpp
+++ b/clang/lib/AST/DeclCXX.cpp
@@ -32,6 +32,7 @@ CXXRecordDecl::DefinitionData::DefinitionData(CXXRecordDecl *D)
Abstract(false), HasTrivialConstructor(true),
HasTrivialCopyConstructor(true), HasTrivialCopyAssignment(true),
HasTrivialDestructor(true), ComputedVisibleConversions(false),
+ DeclaredCopyConstructor(false),
DeclaredCopyAssignment(false), DeclaredDestructor(false),
Bases(0), NumBases(0), VBases(0), NumVBases(0),
Definition(D), FirstFriend(0) {
@@ -295,11 +296,13 @@ CXXRecordDecl::addedConstructor(ASTContext &Context,
// suppress the implicit declaration of a copy constructor.
if (ConDecl->isCopyConstructor()) {
data().UserDeclaredCopyConstructor = true;
-
+ data().DeclaredCopyConstructor = true;
+
// C++ [class.copy]p6:
// A copy constructor is trivial if it is implicitly declared.
// FIXME: C++0x: don't do this for "= default" copy constructors.
data().HasTrivialCopyConstructor = false;
+
}
}
OpenPOWER on IntegriCloud