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
This commit is contained in:
Benjamin Kramer 2013-07-20 08:38:34 +00:00
parent a98ce503b9
commit 916cde6416

View File

@ -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)