diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2013-07-20 08:38:34 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2013-07-20 08:38:34 +0000 |
commit | 916cde6416f0ba10101da8f59d6b0a9ca5b654a0 (patch) | |
tree | c3683f91688d3612d920963df149737c2fc80350 /lib/Transforms | |
parent | a98ce503b958821fd2530aad585c21e730695a9e (diff) | |
download | external_llvm-916cde6416f0ba10101da8f59d6b0a9ca5b654a0.zip external_llvm-916cde6416f0ba10101da8f59d6b0a9ca5b654a0.tar.gz external_llvm-916cde6416f0ba10101da8f59d6b0a9ca5b654a0.tar.bz2 |
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
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/Scalar/SROA.cpp | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/lib/Transforms/Scalar/SROA.cpp b/lib/Transforms/Scalar/SROA.cpp index 2c1aef6..0218593 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) |