From: Lang Hames Date: Sun, 8 Nov 2009 08:49:59 +0000 (+0000) Subject: Moved some ManagedStatics out of the SlotIndexes header. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=16dcaf59960d699735a57b1623092d561c18a165;p=oota-llvm.git 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 --- diff --git a/include/llvm/CodeGen/SlotIndexes.h b/include/llvm/CodeGen/SlotIndexes.h index 294827dc65e..ac63a4c60da 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 emptyKeyEntry; - static ManagedStatic 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 { diff --git a/lib/CodeGen/SlotIndexes.cpp b/lib/CodeGen/SlotIndexes.cpp index d99d120509d..9519114b5a3 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 IndexListEntry::emptyKeyEntry; -ManagedStatic 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 IndexListEntryEmptyKey; + ManagedStatic IndexListEntryTombstoneKey; +} char SlotIndexes::ID = 0; static RegisterPass 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);