aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Transforms
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-07-20 08:38:34 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-07-20 08:38:34 +0000
commit916cde6416f0ba10101da8f59d6b0a9ca5b654a0 (patch)
treec3683f91688d3612d920963df149737c2fc80350 /lib/Transforms
parenta98ce503b958821fd2530aad585c21e730695a9e (diff)
downloadexternal_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.cpp13
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)