mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
reenable array_pod_sort, this time hopefully happy on 64-bit
and big endian systems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60371 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
57036da328
commit
c65fc3bd27
@ -232,6 +232,15 @@ static inline int array_pod_sort_comparator(const void *P1, const void *P2) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// get_array_pad_sort_comparator - This is an internal helper function used to
|
||||||
|
/// get type deduction of T right.
|
||||||
|
template<typename T>
|
||||||
|
static int (*get_array_pad_sort_comparator(const T &X))
|
||||||
|
(const void*, const void*) {
|
||||||
|
return array_pod_sort_comparator<T>;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// array_pod_sort - This sorts an array with the specified start and end
|
/// array_pod_sort - This sorts an array with the specified start and end
|
||||||
/// extent. This is just like std::sort, except that it calls qsort instead of
|
/// extent. This is just like std::sort, except that it calls qsort instead of
|
||||||
/// using an inlined template. qsort is slightly slower than std::sort, but
|
/// using an inlined template. qsort is slightly slower than std::sort, but
|
||||||
@ -246,18 +255,12 @@ static inline int array_pod_sort_comparator(const void *P1, const void *P2) {
|
|||||||
///
|
///
|
||||||
/// NOTE: If qsort_r were portable, we could allow a custom comparator and
|
/// NOTE: If qsort_r were portable, we could allow a custom comparator and
|
||||||
/// default to std::less.
|
/// default to std::less.
|
||||||
}
|
|
||||||
#include <algorithm>
|
|
||||||
namespace llvm {
|
|
||||||
|
|
||||||
template<class IteratorTy>
|
template<class IteratorTy>
|
||||||
static inline void array_pod_sort(IteratorTy Start, IteratorTy End) {
|
static inline void array_pod_sort(IteratorTy Start, IteratorTy End) {
|
||||||
std::sort(Start, End);
|
|
||||||
|
|
||||||
// Don't dereference start iterator of empty sequence.
|
// Don't dereference start iterator of empty sequence.
|
||||||
//if (Start == End) return;
|
if (Start == End) return;
|
||||||
//qsort(&*Start, End-Start, sizeof(*Start),
|
qsort(&*Start, End-Start, sizeof(*Start),
|
||||||
// array_pod_sort_comparator<*Start>);
|
get_array_pad_sort_comparator(*Start));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
Loading…
x
Reference in New Issue
Block a user