summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorMichael Kuperstein <mkuper@google.com>2017-02-03 19:32:50 +0000
committerMichael Kuperstein <mkuper@google.com>2017-02-03 19:32:50 +0000
commit2a735b71b6a5f98086e2843b8e3b7ef328bb51cc (patch)
tree637391f280da39cfbdbb09cf7658f72733d1d640 /llvm/lib/Transforms
parent9677cc6fb74918b9f9fffecb226c3747676de868 (diff)
downloadbcm5719-llvm-2a735b71b6a5f98086e2843b8e3b7ef328bb51cc.tar.gz
bcm5719-llvm-2a735b71b6a5f98086e2843b8e3b7ef328bb51cc.zip
[SLP] Make sortMemAccesses explicitly return an error. NFC.
llvm-svn: 294029
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 8a608ad71ec..dc64c39d385 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -467,7 +467,9 @@ private:
ScalarEvolution &SE) const {
assert(VL.size() == Scalars.size() && "Invalid size");
SmallVector<Value *, 8> List;
- sortMemAccesses(VL, DL, SE, List);
+ if (!sortMemAccesses(VL, DL, SE, List))
+ return false;
+
return std::equal(List.begin(), List.end(), Scalars.begin());
}
@@ -1223,18 +1225,19 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth) {
if (VL.size() > 2 && !ReverseConsecutive) {
bool ShuffledLoads = true;
- SmallVector<Value *, 8> List;
- sortMemAccesses(VL, *DL, *SE, List);
- auto NewVL = makeArrayRef(List.begin(), List.end());
- for (unsigned i = 0, e = NewVL.size() - 1; i < e; ++i) {
- if (!isConsecutiveAccess(NewVL[i], NewVL[i + 1], *DL, *SE)) {
- ShuffledLoads = false;
- break;
+ SmallVector<Value *, 8> Sorted;
+ if (sortMemAccesses(VL, *DL, *SE, Sorted)) {
+ auto NewVL = makeArrayRef(Sorted.begin(), Sorted.end());
+ for (unsigned i = 0, e = NewVL.size() - 1; i < e; ++i) {
+ if (!isConsecutiveAccess(NewVL[i], NewVL[i + 1], *DL, *SE)) {
+ ShuffledLoads = false;
+ break;
+ }
+ }
+ if (ShuffledLoads) {
+ newTreeEntry(NewVL, true, true);
+ return;
}
- }
- if (ShuffledLoads) {
- newTreeEntry(NewVL, true, true);
- return;
}
}
OpenPOWER on IntegriCloud