]> granicus.if.org Git - clang/commitdiff
Use EnumType to simplify some code.
authorChris Lattner <sabre@nondot.org>
Sun, 6 Apr 2008 22:29:16 +0000 (22:29 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 6 Apr 2008 22:29:16 +0000 (22:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49289 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/Type.cpp

index c8fb38680460ac2028f46567f3520db8d8206f35..01f90ba961f0f9cdc9b510c13df0a6c4c81914a2 100644 (file)
@@ -491,9 +491,8 @@ bool Type::isSignedIntegerType() const {
            BT->getKind() <= BuiltinType::LongLong;
   }
   
-  if (const TagType *TT = dyn_cast<TagType>(CanonicalType))
-    if (const EnumDecl *ED = dyn_cast<EnumDecl>(TT->getDecl()))
-      return ED->getIntegerType()->isSignedIntegerType();
+  if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType))
+    return ET->getDecl()->getIntegerType()->isSignedIntegerType();
   
   if (const VectorType *VT = dyn_cast<VectorType>(CanonicalType))
     return VT->getElementType()->isSignedIntegerType();
@@ -512,9 +511,8 @@ bool Type::isUnsignedIntegerType() const {
            BT->getKind() <= BuiltinType::ULongLong;
   }
 
-  if (const TagType *TT = dyn_cast<TagType>(CanonicalType))
-    if (const EnumDecl *ED = dyn_cast<EnumDecl>(TT->getDecl()))
-      return ED->getIntegerType()->isUnsignedIntegerType();
+  if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType))
+    return ET->getDecl()->getIntegerType()->isUnsignedIntegerType();
 
   if (const VectorType *VT = dyn_cast<VectorType>(CanonicalType))
     return VT->getElementType()->isUnsignedIntegerType();
@@ -563,11 +561,10 @@ bool Type::isRealType() const {
 bool Type::isArithmeticType() const {
   if (const BuiltinType *BT = dyn_cast<BuiltinType>(CanonicalType))
     return BT->getKind() != BuiltinType::Void;
-  if (const TagType *TT = dyn_cast<TagType>(CanonicalType))
-    if (const EnumDecl *ED = dyn_cast<EnumDecl>(TT->getDecl()))
-      // GCC allows forward declaration of enum types (forbid by C99 6.7.2.3p2).
-      // If a body isn't seen by the time we get here, return false.
-      return ED->isDefinition();
+  if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType))
+    // GCC allows forward declaration of enum types (forbid by C99 6.7.2.3p2).
+    // If a body isn't seen by the time we get here, return false.
+    return ET->getDecl()->isDefinition();
   if (const ASQualType *ASQT = dyn_cast<ASQualType>(CanonicalType))
     return ASQT->getBaseType()->isArithmeticType();
   return isa<ComplexType>(CanonicalType) || isa<VectorType>(CanonicalType);