mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Provide a common half-open interval map info implementation, and just
re-use that for SlotIndexes. This way other users who want half-open semantics can share the implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171158 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7ccc2f7a78
commit
edf315cd71
@ -151,6 +151,26 @@ struct IntervalMapInfo {
|
||||
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct IntervalMapHalfOpenInfo {
|
||||
|
||||
/// startLess - Return true if x is not in [a;b).
|
||||
static inline bool startLess(const T &x, const T &a) {
|
||||
return x < a;
|
||||
}
|
||||
|
||||
/// stopLess - Return true if x is not in [a;b).
|
||||
static inline bool stopLess(const T &b, const T &x) {
|
||||
return b <= x;
|
||||
}
|
||||
|
||||
/// adjacent - Return true when the intervals [x;a) and [b;y) can coalesce.
|
||||
static inline bool adjacent(const T &a, const T &b) {
|
||||
return a == b;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/// IntervalMapImpl - Namespace used for IntervalMap implementation details.
|
||||
/// It should be considered private to the implementation.
|
||||
namespace IntervalMapImpl {
|
||||
|
@ -20,6 +20,7 @@
|
||||
#define LLVM_CODEGEN_SLOTINDEXES_H
|
||||
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
#include "llvm/ADT/IntervalMap.h"
|
||||
#include "llvm/ADT/PointerIntPair.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/ilist.h"
|
||||
@ -631,17 +632,8 @@ namespace llvm {
|
||||
|
||||
|
||||
// Specialize IntervalMapInfo for half-open slot index intervals.
|
||||
template <typename> struct IntervalMapInfo;
|
||||
template <> struct IntervalMapInfo<SlotIndex> {
|
||||
static inline bool startLess(const SlotIndex &x, const SlotIndex &a) {
|
||||
return x < a;
|
||||
}
|
||||
static inline bool stopLess(const SlotIndex &b, const SlotIndex &x) {
|
||||
return b <= x;
|
||||
}
|
||||
static inline bool adjacent(const SlotIndex &a, const SlotIndex &b) {
|
||||
return a == b;
|
||||
}
|
||||
template <>
|
||||
struct IntervalMapInfo<SlotIndex> : IntervalMapHalfOpenInfo<SlotIndex> {
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user