diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2010-07-16 06:31:12 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2010-07-16 06:31:12 +0000 |
commit | 375efe315707e8a620e239e37b6586cb7975348a (patch) | |
tree | 43d2968d9481876202b56524555bb3d720a43354 /llvm/lib/Transforms | |
parent | 55f321426d989fd428e3a75a5ff5d12cce1aa5f9 (diff) | |
download | bcm5719-llvm-375efe315707e8a620e239e37b6586cb7975348a.tar.gz bcm5719-llvm-375efe315707e8a620e239e37b6586cb7975348a.zip |
Arrays and vectors with different numbers of elements are not equivalent.
llvm-svn: 108517
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/IPO/MergeFunctions.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/IPO/MergeFunctions.cpp b/llvm/lib/Transforms/IPO/MergeFunctions.cpp index aeeafe7fd19..87b10f2e878 100644 --- a/llvm/lib/Transforms/IPO/MergeFunctions.cpp +++ b/llvm/lib/Transforms/IPO/MergeFunctions.cpp @@ -216,11 +216,17 @@ static bool isEquivalentType(const Type *Ty1, const Type *Ty2) { return true; } - case Type::ArrayTyID: + case Type::ArrayTyID: { + const ArrayType *ATy1 = cast<ArrayType>(Ty1); + const ArrayType *ATy2 = cast<ArrayType>(Ty2); + return ATy1->getNumElements() == ATy2->getNumElements() && + isEquivalentType(ATy1->getElementType(), ATy2->getElementType()); + } case Type::VectorTyID: { - const SequentialType *STy1 = cast<SequentialType>(Ty1); - const SequentialType *STy2 = cast<SequentialType>(Ty2); - return isEquivalentType(STy1->getElementType(), STy2->getElementType()); + const VectorType *VTy1 = cast<VectorType>(Ty1); + const VectorType *VTy2 = cast<VectorType>(Ty2); + return VTy1->getNumElements() == VTy2->getNumElements() && + isEquivalentType(VTy1->getElementType(), VTy2->getElementType()); } } } |