From: Benjamin Kramer Date: Sat, 20 Jul 2013 08:38:34 +0000 (+0000) Subject: SROA: Microoptimization: Remove dead entries first, then sort. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=916cde6416f0ba10101da8f59d6b0a9ca5b654a0;p=oota-llvm.git SROA: Microoptimization: Remove dead entries first, then sort. While there replace an explicit struct with std::mem_fun. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186761 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/SROA.cpp b/lib/Transforms/Scalar/SROA.cpp index 2c1aef68fbb..02185936659 100644 --- a/lib/Transforms/Scalar/SROA.cpp +++ b/lib/Transforms/Scalar/SROA.cpp @@ -653,12 +653,6 @@ private: } }; -namespace { -struct IsSliceDead { - bool operator()(const Slice &S) { return S.isDead(); } -}; -} - AllocaSlices::AllocaSlices(const DataLayout &DL, AllocaInst &AI) : #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) @@ -676,12 +670,13 @@ AllocaSlices::AllocaSlices(const DataLayout &DL, AllocaInst &AI) return; } + Slices.erase(std::remove_if(Slices.begin(), Slices.end(), + std::mem_fun_ref(&Slice::isDead)), + Slices.end()); + // Sort the uses. This arranges for the offsets to be in ascending order, // and the sizes to be in descending order. std::sort(Slices.begin(), Slices.end()); - - Slices.erase(std::remove_if(Slices.begin(), Slices.end(), IsSliceDead()), - Slices.end()); } #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)