summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-05-01 09:29:58 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-05-01 09:29:58 +0000
commitaf85886563c38695a1dbc7df19e47e6c66007012 (patch)
treefdd875da21fbbe89939945620c4b2dd5c8826842 /clang/lib/Sema/SemaExprCXX.cpp
parent7ba7bd388b5ed57d9cd9a711b6e4a4f513c6c161 (diff)
downloadbcm5719-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.cpp18
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();
OpenPOWER on IntegriCloud