Author: Timm Baeder Date: 2025-05-21T09:09:41+02:00 New Revision: bc546cabe5381c3f047dcb8004cdf3cf81c10461
URL: https://github.com/llvm/llvm-project/commit/bc546cabe5381c3f047dcb8004cdf3cf81c10461 DIFF: https://github.com/llvm/llvm-project/commit/bc546cabe5381c3f047dcb8004cdf3cf81c10461.diff LOG: [clang][NFC] Clean up ASTContext.cpp (#140847) Use BuiltinType::{isInteger,isSignedInteger,isUnsignedInteger} instead of doing the comparisons here. Added: Modified: clang/include/clang/AST/Type.h clang/lib/AST/Type.cpp Removed: ################################################################################ diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h index 5c8c0e1cf1d00..9f098edfc08ae 100644 --- a/clang/include/clang/AST/Type.h +++ b/clang/include/clang/AST/Type.h @@ -8583,8 +8583,7 @@ bool IsEnumDeclScoped(EnumDecl *); inline bool Type::isIntegerType() const { if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) - return BT->getKind() >= BuiltinType::Bool && - BT->getKind() <= BuiltinType::Int128; + return BT->isInteger(); if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType)) { // Incomplete enum types are not treated as integer types. // FIXME: In C++, enum types are never integer types. @@ -8658,8 +8657,7 @@ inline bool Type::isScalarType() const { inline bool Type::isIntegralOrEnumerationType() const { if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) - return BT->getKind() >= BuiltinType::Bool && - BT->getKind() <= BuiltinType::Int128; + return BT->isInteger(); // Check for a complete enum type; incomplete enum types are not properly an // enumeration type in the sense required here. diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 5d7a4bef8d995..ccacaf29e001f 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -2108,8 +2108,7 @@ bool Type::hasIntegerRepresentation() const { /// \returns true if the type is considered an integral type, false otherwise. bool Type::isIntegralType(const ASTContext &Ctx) const { if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) - return BT->getKind() >= BuiltinType::Bool && - BT->getKind() <= BuiltinType::Int128; + return BT->isInteger(); // Complete enum types are integral in C. if (!Ctx.getLangOpts().CPlusPlus) @@ -2121,8 +2120,7 @@ bool Type::isIntegralType(const ASTContext &Ctx) const { bool Type::isIntegralOrUnscopedEnumerationType() const { if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) - return BT->getKind() >= BuiltinType::Bool && - BT->getKind() <= BuiltinType::Int128; + return BT->isInteger(); if (isBitIntType()) return true; @@ -2211,10 +2209,8 @@ bool Type::isUnicodeCharacterType() const { /// signed, according to C99 6.2.5p4 [char, signed char, short, int, long..], /// an enum decl which has a signed representation bool Type::isSignedIntegerType() const { - if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) { - return BT->getKind() >= BuiltinType::Char_S && - BT->getKind() <= BuiltinType::Int128; - } + if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) + return BT->isSignedInteger(); if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType)) { // Incomplete enum types are not treated as integer types. @@ -2232,15 +2228,12 @@ bool Type::isSignedIntegerType() const { } bool Type::isSignedIntegerOrEnumerationType() const { - if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) { - return BT->getKind() >= BuiltinType::Char_S && - BT->getKind() <= BuiltinType::Int128; - } + if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) + return BT->isSignedInteger(); - if (const auto *ET = dyn_cast<EnumType>(CanonicalType)) { - if (ET->getDecl()->isComplete()) - return ET->getDecl()->getIntegerType()->isSignedIntegerType(); - } + if (const auto *ET = dyn_cast<EnumType>(CanonicalType); + ET && ET->getDecl()->isComplete()) + return ET->getDecl()->getIntegerType()->isSignedIntegerType(); if (const auto *IT = dyn_cast<BitIntType>(CanonicalType)) return IT->isSigned(); @@ -2261,10 +2254,8 @@ bool Type::hasSignedIntegerRepresentation() const { /// unsigned, according to C99 6.2.5p6 [which returns true for _Bool], an enum /// decl which has an unsigned representation bool Type::isUnsignedIntegerType() const { - if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) { - return BT->getKind() >= BuiltinType::Bool && - BT->getKind() <= BuiltinType::UInt128; - } + if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) + return BT->isUnsignedInteger(); if (const auto *ET = dyn_cast<EnumType>(CanonicalType)) { // Incomplete enum types are not treated as integer types. @@ -2282,15 +2273,12 @@ bool Type::isUnsignedIntegerType() const { } bool Type::isUnsignedIntegerOrEnumerationType() const { - if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) { - return BT->getKind() >= BuiltinType::Bool && - BT->getKind() <= BuiltinType::UInt128; - } + if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType)) + return BT->isUnsignedInteger(); - if (const auto *ET = dyn_cast<EnumType>(CanonicalType)) { - if (ET->getDecl()->isComplete()) - return ET->getDecl()->getIntegerType()->isUnsignedIntegerType(); - } + if (const auto *ET = dyn_cast<EnumType>(CanonicalType); + ET && ET->getDecl()->isComplete()) + return ET->getDecl()->getIntegerType()->isUnsignedIntegerType(); if (const auto *IT = dyn_cast<BitIntType>(CanonicalType)) return IT->isUnsigned(); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits