diff options
author | Lang Hames <lhames@gmail.com> | 2009-11-08 08:49:59 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2009-11-08 08:49:59 +0000 |
commit | 16dcaf59960d699735a57b1623092d561c18a165 (patch) | |
tree | 0b3390b15ff788ba77b50a0086c8c954ca22141e | |
parent | ce306a450fd7902501c4df5dd70350ff1d2a606e (diff) |
Moved some ManagedStatics out of the SlotIndexes header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86446 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/SlotIndexes.h | 31 | ||||
-rw-r--r-- | lib/CodeGen/SlotIndexes.cpp | 30 |
2 files changed, 30 insertions, 31 deletions
diff --git a/include/llvm/CodeGen/SlotIndexes.h b/include/llvm/CodeGen/SlotIndexes.h index 294827dc65..ac63a4c60d 100644 --- a/include/llvm/CodeGen/SlotIndexes.h +++ b/include/llvm/CodeGen/SlotIndexes.h @@ -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(); - }; - - class EmptyIndexListEntry : public IndexListEntry { - public: - EmptyIndexListEntry() : IndexListEntry(EMPTY_KEY) {} - }; - - class TombstoneIndexListEntry : public IndexListEntry { - public: - TombstoneIndexListEntry() : IndexListEntry(TOMBSTONE_KEY) {} + static IndexListEntry* getTombstoneKeyEntry(); }; - inline IndexListEntry* IndexListEntry::getEmptyKeyEntry() { - return &*emptyKeyEntry; - } - - inline IndexListEntry* IndexListEntry::getTombstoneKeyEntry() { - return &*tombstoneKeyEntry; - } - // Specialize PointerLikeTypeTraits for IndexListEntry. template <> class PointerLikeTypeTraits<IndexListEntry*> { diff --git a/lib/CodeGen/SlotIndexes.cpp b/lib/CodeGen/SlotIndexes.cpp index d99d120509..9519114b5a 100644 --- a/lib/CodeGen/SlotIndexes.cpp +++ b/lib/CodeGen/SlotIndexes.cpp @@ -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); |