mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Arrays and vectors with different numbers of elements are not equivalent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108517 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
384271b57d
commit
394ce41b7f
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
18
test/Transforms/MergeFunc/vectors-and-arrays.ll
Normal file
18
test/Transforms/MergeFunc/vectors-and-arrays.ll
Normal file
@ -0,0 +1,18 @@
|
||||
; RUN: opt -mergefunc < %s -disable-output -stats | not grep merged
|
||||
; This used to crash with an assert.
|
||||
|
||||
define <2 x i8> @v1(<2 x i8> %x) {
|
||||
ret <2 x i8> %x
|
||||
}
|
||||
|
||||
define <4 x i8> @v2(<4 x i8> %x) {
|
||||
ret <4 x i8> %x
|
||||
}
|
||||
|
||||
define [2 x i8] @a1([2 x i8] %x) {
|
||||
ret [2 x i8] %x
|
||||
}
|
||||
|
||||
define [4 x i8] @a2([4 x i8] %x) {
|
||||
ret [4 x i8] %x
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user