[PATCH] D65523: SROA: Check Total Bits of vector type
Suyog Sarda via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 31 10:03:24 PDT 2019
ssarda created this revision.
ssarda added reviewers: t.p.northover, reames, arsenm, kparzysz.
ssarda added a project: LLVM.
Herald added subscribers: llvm-commits, hiraditya, wdng.
SROA: Check Total Bits of vector type
While Promoting alloca instruction of Vector Type, Check total size in bits of its slices too.
If they don't match, don't promote the alloca instruction.
Bug : https://bugs.llvm.org/show_bug.cgi?id=42585
Repository:
rL LLVM
https://reviews.llvm.org/D65523
Files:
llvm/lib/Transforms/Scalar/SROA.cpp
llvm/test/Transforms/SROA/vector-promotion-different-size.ll
Index: llvm/test/Transforms/SROA/vector-promotion-different-size.ll
===================================================================
--- /dev/null
+++ llvm/test/Transforms/SROA/vector-promotion-different-size.ll
@@ -0,0 +1,13 @@
+; RUN: opt < %s -sroa -S | FileCheck %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n8:16:32:64"
+
+define <4 x i1> @vector_bitcast() {
+ ; CHECK-LABEL: @vector_bitcast
+ ; CHECK: alloca i1
+
+ %a = alloca <3 x i1>
+ store <3 x i1> <i1 1,i1 0,i1 1>, <3 x i1>* %a
+ %cast = bitcast <3 x i1>* %a to <4 x i1>*
+ %vec = load <4 x i1>, <4 x i1>* %cast
+ ret <4 x i1> %vec
+}
Index: llvm/lib/Transforms/Scalar/SROA.cpp
===================================================================
--- llvm/lib/Transforms/Scalar/SROA.cpp
+++ llvm/lib/Transforms/Scalar/SROA.cpp
@@ -1888,6 +1888,13 @@
bool HaveCommonEltTy = true;
auto CheckCandidateType = [&](Type *Ty) {
if (auto *VTy = dyn_cast<VectorType>(Ty)) {
+ 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();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65523.212612.patch
Type: text/x-patch
Size: 1372 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190731/b14bae86/attachment.bin>
More information about the llvm-commits
mailing list