From: Chris Lattner Date: Mon, 7 Apr 2008 05:36:14 +0000 (+0000) Subject: simplify vector type compatibility testing. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f62f9cd5a78e5445a02e37b277f7a2df9c19b7a3;p=clang simplify vector type compatibility testing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49314 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index bec9efa2b1..9f1caf4829 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -333,7 +333,6 @@ public: bool functionTypesAreCompatible(QualType, QualType); // C99 6.7.5.3p15 bool arrayTypesAreCompatible(QualType, QualType); // C99 6.7.5.2p6 bool builtinTypesAreCompatible(QualType, QualType); - bool vectorTypesAreCompatible(QualType, QualType); bool objcTypesAreCompatible(QualType, QualType); bool isObjCIdType(QualType T) const { diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 439a99c4b2..31537947a0 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -1507,16 +1507,13 @@ areCompatObjCQualInterfaces(const ObjCQualifiedInterfaceType *LHS, return false; } - -bool ASTContext::vectorTypesAreCompatible(QualType lhs, QualType rhs) { - const VectorType *lVector = lhs->getAsVectorType(); - const VectorType *rVector = rhs->getAsVectorType(); - - if ((lVector->getElementType().getCanonicalType() == - rVector->getElementType().getCanonicalType()) && - (lVector->getNumElements() == rVector->getNumElements())) - return true; - return false; +/// areCompatVectorTypes - Return true if the two specified vector types are +/// compatible. +static bool areCompatVectorTypes(const VectorType *LHS, + const VectorType *RHS) { + assert(LHS->isCanonical() && RHS->isCanonical()); + return LHS->getElementType() == RHS->getElementType() && + LHS->getNumElements() == RHS->getNumElements(); } // C99 6.2.7p1: If both are complete types, then the following additional @@ -1704,7 +1701,7 @@ bool ASTContext::typesAreCompatible(QualType LHS_NC, QualType RHS_NC) { cast(RHS)->getDecl()); case Type::Vector: case Type::OCUVector: - return vectorTypesAreCompatible(LHS, RHS); + return areCompatVectorTypes(cast(LHS), cast(RHS)); case Type::ObjCQualifiedInterface: return areCompatObjCQualInterfaces(cast(LHS), cast(RHS));