[cfe-commits] r43604 - in /cfe/trunk: AST/ASTContext.cpp clang.xcodeproj/project.pbxproj include/clang/AST/ASTContext.h
Chris Lattner
sabre at nondot.org
Wed Oct 31 22:03:41 PDT 2007
Author: lattner
Date: Thu Nov 1 00:03:41 2007
New Revision: 43604
URL: http://llvm.org/viewvc/llvm-project?rev=43604&view=rev
Log:
add support for vector type compatibility checking. Patch by Nate Begeman.
Modified:
cfe/trunk/AST/ASTContext.cpp
cfe/trunk/clang.xcodeproj/project.pbxproj
cfe/trunk/include/clang/AST/ASTContext.h
Modified: cfe/trunk/AST/ASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/AST/ASTContext.cpp?rev=43604&r1=43603&r2=43604&view=diff
==============================================================================
--- cfe/trunk/AST/ASTContext.cpp (original)
+++ cfe/trunk/AST/ASTContext.cpp Thu Nov 1 00:03:41 2007
@@ -784,7 +784,7 @@
return getFloatingRank(CT->getElementType());
switch (cast<BuiltinType>(T)->getKind()) {
- default: assert(0 && "getFloatingPointRank(): not a floating type");
+ default: assert(0 && "getFloatingRank(): not a floating type");
case BuiltinType::Float: return FloatRank;
case BuiltinType::Double: return DoubleRank;
case BuiltinType::LongDouble: return LongDoubleRank;
@@ -1141,6 +1141,17 @@
return true; // FIXME: IMPLEMENT.
}
+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;
+}
+
// C99 6.2.7p1: If both are complete types, then the following additional
// requirements apply...FIXME (handle compatibility across source files).
bool ASTContext::tagTypesAreCompatible(QualType lhs, QualType rhs) {
@@ -1279,6 +1290,9 @@
return builtinTypesAreCompatible(lcanon, rcanon);
case Type::ObjcInterface:
return interfaceTypesAreCompatible(lcanon, rcanon);
+ case Type::Vector:
+ case Type::OCUVector:
+ return vectorTypesAreCompatible(lcanon, rcanon);
default:
assert(0 && "unexpected type");
}
Modified: cfe/trunk/clang.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/clang.xcodeproj/project.pbxproj?rev=43604&r1=43603&r2=43604&view=diff
==============================================================================
--- cfe/trunk/clang.xcodeproj/project.pbxproj (original)
+++ cfe/trunk/clang.xcodeproj/project.pbxproj Thu Nov 1 00:03:41 2007
@@ -756,6 +756,7 @@
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "clang" */;
+ compatibilityVersion = "Xcode 2.4";
hasScannedForEncodings = 1;
mainGroup = 08FB7794FE84155DC02AAC07 /* clang */;
projectDirPath = "";
Modified: cfe/trunk/include/clang/AST/ASTContext.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTContext.h?rev=43604&r1=43603&r2=43604&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/ASTContext.h (original)
+++ cfe/trunk/include/clang/AST/ASTContext.h Thu Nov 1 00:03:41 2007
@@ -267,6 +267,7 @@
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);
/// Objective-C specific type checking.
bool interfaceTypesAreCompatible(QualType, QualType);
More information about the cfe-commits
mailing list