summaryrefslogtreecommitdiff
path: root/include/llvm/SymbolTableListTraits.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/SymbolTableListTraits.h')
-rw-r--r--include/llvm/SymbolTableListTraits.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/include/llvm/SymbolTableListTraits.h b/include/llvm/SymbolTableListTraits.h
index 099cfe0ca7..205b409e8e 100644
--- a/include/llvm/SymbolTableListTraits.h
+++ b/include/llvm/SymbolTableListTraits.h
@@ -39,10 +39,15 @@ template<typename Ty> struct ilist_traits;
template<typename ValueSubClass, typename ItemParentClass>
class SymbolTableListTraits {
typedef ilist_traits<ValueSubClass> TraitsClass;
- ItemParentClass *ItemParent;
public:
- SymbolTableListTraits() : ItemParent(0) {}
+ SymbolTableListTraits() {}
+ /// getListOwner - Return the object that owns this list. If this is a list
+ /// of instructions, it returns the BasicBlock that owns them.
+ ItemParentClass *getListOwner() {
+ return reinterpret_cast<ItemParentClass*>((char*)this-
+ TraitsClass::getListOffset());
+ }
static ValueSubClass *getPrev(ValueSubClass *V) { return V->getPrev(); }
static ValueSubClass *getNext(ValueSubClass *V) { return V->getNext(); }
static const ValueSubClass *getPrev(const ValueSubClass *V) {
@@ -62,7 +67,6 @@ public:
ilist_iterator<ValueSubClass> first,
ilist_iterator<ValueSubClass> last);
//private:
- void setItemParent(ItemParentClass *IP) { ItemParent = IP; }
template<typename TPtr>
void setSymTabObject(TPtr *, TPtr);
};