convert an std::sort to array_pod_sort.

llvm-svn: 121669
This commit is contained in:
Chris Lattner 2010-12-13 02:00:58 +00:00
parent 1475987634
commit 7c8e6047d6
1 changed files with 8 additions and 2 deletions

View File

@ -29,8 +29,8 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/STLExtras.h"
#include <algorithm>
#include <functional>
#include <set>
#include <map>
using namespace llvm;
@ -610,6 +610,12 @@ namespace {
};
}
static int ConstantIntSortPredicate(const void *P1, const void *P2) {
const ConstantInt *LHS = *(const ConstantInt**)P1;
const ConstantInt *RHS = *(const ConstantInt**)P2;
return LHS->getValue().ult(RHS->getValue());
}
/// FoldValueComparisonIntoPredecessors - The specified terminator is a value
/// equality comparison instruction (either a switch or a branch on "X == c").
/// See if any of the predecessors of the terminator block are value comparisons
@ -1985,7 +1991,7 @@ bool SimplifyCFGOpt::run(BasicBlock *BB) {
if (CompVal) {
// There might be duplicate constants in the list, which the switch
// instruction can't handle, remove them now.
std::sort(Values.begin(), Values.end(), ConstantIntOrdering());
array_pod_sort(Values.begin(), Values.end(), ConstantIntSortPredicate);
Values.erase(std::unique(Values.begin(), Values.end()), Values.end());
// Figure out which block is which destination.