diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-07-02 23:41:54 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-07-02 23:41:54 +0000 |
| commit | a6d695057cbebb1b08e0f4a9dd3730e4c3ecf9da (patch) | |
| tree | 2004b481b6a3908a1435ced5c8ae899ad38d444e /clang/lib/AST/DeclCXX.cpp | |
| parent | 3701fcd759fc1b7f55c2de06ce715edcea71053f (diff) | |
| download | bcm5719-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.cpp | 5 |
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; + } } |

