diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 21:55:13 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 21:55:13 +0000 |
commit | b96995b67f15110f39c41149543e19c8189abdaf (patch) | |
tree | 1971f6467f0c9a77b68ee72bcba9b89bbea52f08 /llvm/lib/Transforms/Scalar/SROA.cpp | |
parent | fa0a39b7ea7d26d220d018044055197a5284f2b5 (diff) |
Vendor import of llvm-project tag llvmorg-9.0.1:vendor/llvm-project/llvmorg-9.0.1
Notes
Notes:
svn path=/vendor/llvm-project/release-9.x/; revision=355961
svn path=/vendor/llvm-project/llvmorg-9.0.1/; revision=355963; tag=vendor/llvm-project/llvmorg-9.0.1
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SROA.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/SROA.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp index 33f90d0b01e4..bd4c21d65abc 100644 --- a/llvm/lib/Transforms/Scalar/SROA.cpp +++ b/llvm/lib/Transforms/Scalar/SROA.cpp @@ -1888,6 +1888,14 @@ static VectorType *isVectorPromotionViable(Partition &P, const DataLayout &DL) { bool HaveCommonEltTy = true; auto CheckCandidateType = [&](Type *Ty) { if (auto *VTy = dyn_cast<VectorType>(Ty)) { + // Return if bitcast to vectors is different for total size in bits. + if (!CandidateTys.empty()) { + VectorType *V = CandidateTys[0]; + if (DL.getTypeSizeInBits(VTy) != DL.getTypeSizeInBits(V)) { + CandidateTys.clear(); + return; + } + } CandidateTys.push_back(VTy); if (!CommonEltTy) CommonEltTy = VTy->getElementType(); |