mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-16 08:08:01 +00:00
Moved some ManagedStatics out of the SlotIndexes header.
llvm-svn: 86446
This commit is contained in:
parent
d8faf7adb4
commit
3126c532b2
@ -29,13 +29,9 @@
|
||||
#include "llvm/CodeGen/MachineInstr.h"
|
||||
#include "llvm/Support/Allocator.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class EmptyIndexListEntry;
|
||||
class TombstoneIndexListEntry;
|
||||
|
||||
/// This class represents an entry in the slot index list held in the
|
||||
/// SlotIndexes pass. It should not be used directly. See the
|
||||
/// SlotIndex & SlotIndexes classes for the public interface to this
|
||||
@ -46,11 +42,6 @@ namespace llvm {
|
||||
static const unsigned EMPTY_KEY_INDEX = ~0U & ~3U,
|
||||
TOMBSTONE_KEY_INDEX = ~0U & ~7U;
|
||||
|
||||
// The following statics are thread safe. They're read only, and you
|
||||
// can't step from them to any other list entries.
|
||||
static ManagedStatic<EmptyIndexListEntry> emptyKeyEntry;
|
||||
static ManagedStatic<TombstoneIndexListEntry> tombstoneKeyEntry;
|
||||
|
||||
IndexListEntry *next, *prev;
|
||||
MachineInstr *mi;
|
||||
unsigned index;
|
||||
@ -116,31 +107,13 @@ namespace llvm {
|
||||
|
||||
// This function returns the index list entry that is to be used for empty
|
||||
// SlotIndex keys.
|
||||
inline static IndexListEntry* getEmptyKeyEntry();
|
||||
static IndexListEntry* getEmptyKeyEntry();
|
||||
|
||||
// This function returns the index list entry that is to be used for
|
||||
// tombstone SlotIndex keys.
|
||||
inline static IndexListEntry* getTombstoneKeyEntry();
|
||||
static IndexListEntry* getTombstoneKeyEntry();
|
||||
};
|
||||
|
||||
class EmptyIndexListEntry : public IndexListEntry {
|
||||
public:
|
||||
EmptyIndexListEntry() : IndexListEntry(EMPTY_KEY) {}
|
||||
};
|
||||
|
||||
class TombstoneIndexListEntry : public IndexListEntry {
|
||||
public:
|
||||
TombstoneIndexListEntry() : IndexListEntry(TOMBSTONE_KEY) {}
|
||||
};
|
||||
|
||||
inline IndexListEntry* IndexListEntry::getEmptyKeyEntry() {
|
||||
return &*emptyKeyEntry;
|
||||
}
|
||||
|
||||
inline IndexListEntry* IndexListEntry::getTombstoneKeyEntry() {
|
||||
return &*tombstoneKeyEntry;
|
||||
}
|
||||
|
||||
// Specialize PointerLikeTypeTraits for IndexListEntry.
|
||||
template <>
|
||||
class PointerLikeTypeTraits<IndexListEntry*> {
|
||||
|
@ -13,17 +13,43 @@
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
||||
// Yep - these are thread safe. See the header for details.
|
||||
ManagedStatic<EmptyIndexListEntry> IndexListEntry::emptyKeyEntry;
|
||||
ManagedStatic<TombstoneIndexListEntry> IndexListEntry::tombstoneKeyEntry;
|
||||
namespace {
|
||||
|
||||
|
||||
class EmptyIndexListEntry : public IndexListEntry {
|
||||
public:
|
||||
EmptyIndexListEntry() : IndexListEntry(EMPTY_KEY) {}
|
||||
};
|
||||
|
||||
class TombstoneIndexListEntry : public IndexListEntry {
|
||||
public:
|
||||
TombstoneIndexListEntry() : IndexListEntry(TOMBSTONE_KEY) {}
|
||||
};
|
||||
|
||||
// The following statics are thread safe. They're read only, and you
|
||||
// can't step from them to any other list entries.
|
||||
ManagedStatic<EmptyIndexListEntry> IndexListEntryEmptyKey;
|
||||
ManagedStatic<TombstoneIndexListEntry> IndexListEntryTombstoneKey;
|
||||
}
|
||||
|
||||
char SlotIndexes::ID = 0;
|
||||
static RegisterPass<SlotIndexes> X("slotindexes", "Slot index numbering");
|
||||
|
||||
IndexListEntry* IndexListEntry::getEmptyKeyEntry() {
|
||||
return &*IndexListEntryEmptyKey;
|
||||
}
|
||||
|
||||
IndexListEntry* IndexListEntry::getTombstoneKeyEntry() {
|
||||
return &*IndexListEntryTombstoneKey;
|
||||
}
|
||||
|
||||
|
||||
void SlotIndexes::getAnalysisUsage(AnalysisUsage &au) const {
|
||||
au.setPreservesAll();
|
||||
MachineFunctionPass::getAnalysisUsage(au);
|
||||
|
Loading…
Reference in New Issue
Block a user