diff options
author | Yi Jiang <yjiang@apple.com> | 2014-05-05 17:59:14 +0000 |
---|---|---|
committer | Yi Jiang <yjiang@apple.com> | 2014-05-05 17:59:14 +0000 |
commit | a4821fc9fba1c8a9b92beb1ad87c020d04c88bea (patch) | |
tree | e2fb40a59450d868eefc149c93a9b767d5543053 /llvm/lib/Transforms/Vectorize | |
parent | 302be7e891627590f50585356675ac16f1d6e7ee (diff) | |
download | bcm5719-llvm-a4821fc9fba1c8a9b92beb1ad87c020d04c88bea.tar.gz bcm5719-llvm-a4821fc9fba1c8a9b92beb1ad87c020d04c88bea.zip |
Always set alignment of vectorized LD/ST in SLP-Vectorizer. <rdar://problem/16812145>
llvm-svn: 207983
Diffstat (limited to 'llvm/lib/Transforms/Vectorize')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index 895826f1d87..0eb045e628b 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -1622,6 +1622,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) { VecTy->getPointerTo(AS)); unsigned Alignment = LI->getAlignment(); LI = Builder.CreateLoad(VecPtr); + if (!Alignment) + Alignment = DL->getABITypeAlignment(LI->getPointerOperand()->getType()); LI->setAlignment(Alignment); E->VectorizedValue = LI; return propagateMetadata(LI, E->Scalars); @@ -1641,6 +1643,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) { Value *VecPtr = Builder.CreateBitCast(SI->getPointerOperand(), VecTy->getPointerTo(AS)); StoreInst *S = Builder.CreateStore(VecValue, VecPtr); + if (!Alignment) + Alignment = DL->getABITypeAlignment(SI->getPointerOperand()->getType()); S->setAlignment(Alignment); E->VectorizedValue = S; return propagateMetadata(S, E->Scalars); |