diff options
author | Chris Lattner <sabre@nondot.org> | 2008-04-07 06:49:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-04-07 06:49:41 +0000 |
commit | ec646834e7bb008ee3f58d4fe1445ac64f0382c2 (patch) | |
tree | abbe4197161c58556bde5a37ac5657a92cf35c47 /clang/lib/Sema | |
parent | 3c7961597f8e06637191b7d3ebd9f37791838a8e (diff) | |
download | bcm5719-llvm-ec646834e7bb008ee3f58d4fe1445ac64f0382c2.tar.gz bcm5719-llvm-ec646834e7bb008ee3f58d4fe1445ac64f0382c2.zip |
simplify compatibility testing for tag types.
llvm-svn: 49323
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index a528519d265..f0f05006f37 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -1167,7 +1167,6 @@ Sema::CheckPointerTypesForAssignment(QualType lhsType, QualType rhsType) { /// /// As a result, the code for dealing with pointers is more complex than the /// C99 spec dictates. -/// Note: the warning above turn into errors when -pedantic-errors is enabled. /// Sema::AssignConvertType Sema::CheckAssignmentConstraints(QualType lhsType, QualType rhsType) { @@ -1191,9 +1190,9 @@ Sema::CheckAssignmentConstraints(QualType lhsType, QualType rhsType) { return Incompatible; } - if (lhsType->isVectorType() || rhsType->isVectorType()) { + if (isa<VectorType>(lhsType) || isa<VectorType>(rhsType)) { // For OCUVector, allow vector splats; float -> <n x float> - if (const OCUVectorType *LV = lhsType->getAsOCUVectorType()) { + if (const OCUVectorType *LV = dyn_cast<OCUVectorType>(lhsType)) { if (LV->getElementType().getTypePtr() == rhsType.getTypePtr()) return Compatible; } @@ -1216,27 +1215,27 @@ Sema::CheckAssignmentConstraints(QualType lhsType, QualType rhsType) { if (lhsType->isArithmeticType() && rhsType->isArithmeticType()) return Compatible; - if (lhsType->isPointerType()) { + if (isa<PointerType>(lhsType)) { if (rhsType->isIntegerType()) return IntToPointer; - if (rhsType->isPointerType()) + if (isa<PointerType>(rhsType)) return CheckPointerTypesForAssignment(lhsType, rhsType); return Incompatible; } - if (rhsType->isPointerType()) { + if (isa<PointerType>(rhsType)) { // C99 6.5.16.1p1: the left operand is _Bool and the right is a pointer. - if ((lhsType->isIntegerType()) && (lhsType != Context.BoolTy)) + if (lhsType->isIntegerType() && lhsType != Context.BoolTy) return PointerToInt; - if (lhsType->isPointerType()) + if (isa<PointerType>(lhsType)) return CheckPointerTypesForAssignment(lhsType, rhsType); return Incompatible; } if (isa<TagType>(lhsType) && isa<TagType>(rhsType)) { - if (Context.tagTypesAreCompatible(lhsType, rhsType)) + if (Context.typesAreCompatible(lhsType, rhsType)) return Compatible; } return Incompatible; |