summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclCXX.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-04-16 00:08:20 +0000
committerAnders Carlsson <andersca@mac.com>2009-04-16 00:08:20 +0000
commitfe63dc52f9f8f4a39222a541670d4aff326c45ad (patch)
tree94fa3f48fec002d032ed66395bf7df084adca814 /clang/lib/AST/DeclCXX.cpp
parenta3c5590ec21c6c872ee366e4d2d6058607d5bfdc (diff)
downloadbcm5719-llvm-fe63dc52f9f8f4a39222a541670d4aff326c45ad.tar.gz
bcm5719-llvm-fe63dc52f9f8f4a39222a541670d4aff326c45ad.zip
Add support for the __has_trivial_constructor type trait.
llvm-svn: 69245
Diffstat (limited to 'clang/lib/AST/DeclCXX.cpp')
-rw-r--r--clang/lib/AST/DeclCXX.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp
index ffc35fe1f74..78ed3fcf4d7 100644
--- a/clang/lib/AST/DeclCXX.cpp
+++ b/clang/lib/AST/DeclCXX.cpp
@@ -29,6 +29,7 @@ CXXRecordDecl::CXXRecordDecl(Kind K, TagKind TK, DeclContext *DC,
UserDeclaredConstructor(false), UserDeclaredCopyConstructor(false),
UserDeclaredCopyAssignment(false), UserDeclaredDestructor(false),
Aggregate(true), PlainOldData(true), Polymorphic(false), Abstract(false),
+ HasTrivialConstructor(true),
Bases(0), NumBases(0), Conversions(DC, DeclarationName()),
TemplateOrInstantiation() { }
@@ -138,6 +139,11 @@ CXXRecordDecl::addedConstructor(ASTContext &Context,
// A POD-struct is an aggregate class [...]
PlainOldData = false;
+ // C++ [class.ctor]p5:
+ // A constructor is trivial if it is an implicitly-declared default
+ // constructor.
+ HasTrivialConstructor = false;
+
// Note when we have a user-declared copy constructor, which will
// suppress the implicit declaration of a copy constructor.
if (ConDecl->isCopyConstructor(Context))
OpenPOWER on IntegriCloud