simplify vector type compatibility testing.

llvm-svn: 49314
This commit is contained in:
Chris Lattner 2008-04-07 05:36:14 +00:00
parent 2a3569b5d9
commit f8a6b4d4fc
2 changed files with 8 additions and 12 deletions

View File

@ -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 {

View File

@ -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<ObjCInterfaceType>(RHS)->getDecl());
case Type::Vector:
case Type::OCUVector:
return vectorTypesAreCompatible(LHS, RHS);
return areCompatVectorTypes(cast<VectorType>(LHS), cast<VectorType>(RHS));
case Type::ObjCQualifiedInterface:
return areCompatObjCQualInterfaces(cast<ObjCQualifiedInterfaceType>(LHS),
cast<ObjCQualifiedInterfaceType>(RHS));