From 2a735b71b6a5f98086e2843b8e3b7ef328bb51cc Mon Sep 17 00:00:00 2001 From: Michael Kuperstein Date: Fri, 3 Feb 2017 19:32:50 +0000 Subject: [SLP] Make sortMemAccesses explicitly return an error. NFC. llvm-svn: 294029 --- llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 27 ++++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp') 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 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 VL, unsigned Depth) { if (VL.size() > 2 && !ReverseConsecutive) { bool ShuffledLoads = true; - SmallVector 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 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; } } -- cgit v1.2.3