diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2011-05-01 09:29:58 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2011-05-01 09:29:58 +0000 |
commit | af85886563c38695a1dbc7df19e47e6c66007012 (patch) | |
tree | fdd875da21fbbe89939945620c4b2dd5c8826842 /clang/lib/Sema/SemaExprCXX.cpp | |
parent | 7ba7bd388b5ed57d9cd9a711b6e4a4f513c6c161 (diff) | |
download | bcm5719-llvm-af85886563c38695a1dbc7df19e47e6c66007012.tar.gz bcm5719-llvm-af85886563c38695a1dbc7df19e47e6c66007012.zip |
Move several more type traits' implementations into the AST. A few were
already present in the AST, and I added the ones that weren't.
llvm-svn: 130655
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 2664c7811ca..270ee298870 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -2484,13 +2484,9 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, UnaryTypeTrait UTT, case UTT_IsEnum: return T->isEnumeralType(); case UTT_IsUnion: - if (const RecordType *Record = T->getAs<RecordType>()) - return Record->getDecl()->isUnion(); - return false; + return T->isUnionType(); case UTT_IsClass: - if (const RecordType *Record = T->getAs<RecordType>()) - return !Record->getDecl()->isUnion(); - return false; + return T->isClassType() || T->isStructureType(); case UTT_IsFunction: return T->isFunctionType(); @@ -2499,17 +2495,15 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, UnaryTypeTrait UTT, case UTT_IsReference: return T->isReferenceType(); case UTT_IsArithmetic: - return T->isArithmeticType() && ! T->isEnumeralType(); + return T->isArithmeticType() && !T->isEnumeralType(); case UTT_IsFundamental: - return T->isVoidType() || (T->isArithmeticType() && ! T->isEnumeralType()); + return T->isFundamentalType(); case UTT_IsObject: - // Defined in Section 3.9 p8 of the Working Draft, essentially: - // !__is_reference(T) && !__is_function(T) && !__is_void(T). - return ! (T->isReferenceType() || T->isFunctionType() || T->isVoidType()); + return T->isObjectType(); case UTT_IsScalar: return T->isScalarType(); case UTT_IsCompound: - return ! (T->isVoidType() || T->isArithmeticType()) || T->isEnumeralType(); + return T->isCompoundType(); case UTT_IsMemberPointer: return T->isMemberPointerType(); |