summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ExprCXX.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-08-15 21:55:26 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-08-15 21:55:26 +0000
commitc96d4963eb2eb99f9fac36687194489ecfac7b9c (patch)
treea380891fbe17cbacb7a47eb244e738a4582bc212 /clang/lib/AST/ExprCXX.cpp
parentb20757bdeb97d3615e7db90dd02d5a24e0cf6489 (diff)
downloadbcm5719-llvm-c96d4963eb2eb99f9fac36687194489ecfac7b9c.tar.gz
bcm5719-llvm-c96d4963eb2eb99f9fac36687194489ecfac7b9c.zip
Implement __is_empty. Patch by Sean Hunt.
llvm-svn: 79143
Diffstat (limited to 'clang/lib/AST/ExprCXX.cpp')
-rw-r--r--clang/lib/AST/ExprCXX.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 454dc14b6c8..006f69890ab 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -223,6 +223,12 @@ bool UnaryTypeTraitExpr::EvaluateTrait(ASTContext& C) const {
if (const RecordType *RT = QueriedType->getAs<RecordType>())
return cast<CXXRecordDecl>(RT->getDecl())->isAbstract();
return false;
+ case UTT_IsEmpty:
+ if (const RecordType *Record = QueriedType->getAs<RecordType>()) {
+ return !Record->getDecl()->isUnion()
+ && cast<CXXRecordDecl>(Record->getDecl())->isEmpty();
+ }
+ return false;
case UTT_HasTrivialConstructor:
// http://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html:
// If __is_pod (type) is true then the trait is true, else if type is
OpenPOWER on IntegriCloud