diff options
author | Sanjay Patel <spatel@rotateright.com> | 2015-08-31 22:59:03 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2015-08-31 22:59:03 +0000 |
commit | 719b3e6a3ebbe469ad6a420261b0ebc78cb4c0fe (patch) | |
tree | 1dd7053eaf374b1f2511e00a875720a49a8826e6 /llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | |
parent | ce8c9c05489ad6b87f63ca949946ccf089ef8d0c (diff) | |
download | bcm5719-llvm-719b3e6a3ebbe469ad6a420261b0ebc78cb4c0fe.tar.gz bcm5719-llvm-719b3e6a3ebbe469ad6a420261b0ebc78cb4c0fe.zip |
don't set a legal vector type if we know we can't use that type (NFCI)
Added benefit: the 'if' logic now matches the text of the comment that describes it.
llvm-svn: 246506
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 4835c38b354..ae2fc14fb50 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -11054,27 +11054,21 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode* St) { } } - // Find a legal type for the vector store. - EVT Ty = EVT::getVectorVT(Context, MemVT, i+1); - if (TLI.isTypeLegal(Ty) && - TLI.allowsMemoryAccess(Context, DL, Ty, FirstStoreAS, - FirstStoreAlign)) { - LastLegalVectorType = i + 1; + // We only use vectors if the constant is known to be zero or the target + // allows it and the function is not marked with the noimplicitfloat + // attribute. + if ((!NonZero || TLI.storeOfVectorConstantIsCheap(MemVT, i+1, + FirstStoreAS)) && + !NoVectors) { + // Find a legal type for the vector store. + EVT Ty = EVT::getVectorVT(Context, MemVT, i+1); + if (TLI.isTypeLegal(Ty) && + TLI.allowsMemoryAccess(Context, DL, Ty, FirstStoreAS, + FirstStoreAlign)) + LastLegalVectorType = i + 1; } } - - // We only use vectors if the constant is known to be zero or the target - // allows it and the function is not marked with the noimplicitfloat - // attribute. - if (NoVectors) { - LastLegalVectorType = 0; - } else if (NonZero && !TLI.storeOfVectorConstantIsCheap(MemVT, - LastLegalVectorType, - FirstStoreAS)) { - LastLegalVectorType = 0; - } - // Check if we found a legal integer type to store. if (LastLegalType == 0 && LastLegalVectorType == 0) return false; |