From 6b5689ed55bef1a6cf358dbb1016871d2237e1e6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 28 Apr 2002 04:45:48 +0000 Subject: * Module's are no longer Value's * Incorporate SymTabValue contents into the Module class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2345 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Module.h | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'include') diff --git a/include/llvm/Module.h b/include/llvm/Module.h index cd15178..a87b483 100644 --- a/include/llvm/Module.h +++ b/include/llvm/Module.h @@ -13,14 +13,14 @@ #define LLVM_MODULE_H #include "llvm/Value.h" -#include "llvm/SymTabValue.h" #include "llvm/ValueHolder.h" class GlobalVariable; class GlobalValueRefMap; // Used by ConstantVals.cpp class ConstantPointerRef; class FunctionType; +class SymbolTable; -class Module : public Value, public SymTabValue { +class Module : public Annotable { public: typedef ValueHolder GlobalListType; typedef ValueHolder FunctionListType; @@ -43,6 +43,8 @@ private: GlobalValueRefMap *GVRefMap; + SymbolTable *SymTab; + // Accessor for the underlying GlobalValRefMap... only through the // ConstantPointerRef class... friend class ConstantPointerRef; @@ -80,6 +82,28 @@ public: inline const FunctionListType &getFunctionList() const { return FunctionList;} inline FunctionListType &getFunctionList() { return FunctionList;} + + //===--------------------------------------------------------------------===// + // Symbol table support functions... + + // hasSymbolTable() - Returns true if there is a symbol table allocated to + // this object AND if there is at least one name in it! + // + bool hasSymbolTable() const; + + // CAUTION: The current symbol table may be null if there are no names (ie, + // the symbol table is empty) + // + inline SymbolTable *getSymbolTable() { return SymTab; } + inline const SymbolTable *getSymbolTable() const { return SymTab; } + + // getSymbolTableSure is guaranteed to not return a null pointer, because if + // the method does not already have a symtab, one is created. Use this if + // you intend to put something into the symbol table for the method. + // + SymbolTable *getSymbolTableSure(); + + //===--------------------------------------------------------------------===// // Module iterator forwarding functions // @@ -119,13 +143,7 @@ public: inline const Function *back() const { return FunctionList.back(); } inline Function *back() { return FunctionList.back(); } - // Methods for support type inquiry through isa, cast, and dyn_cast: - static inline bool classof(const Module *T) { return true; } - static inline bool classof(const Value *V) { - return V->getValueType() == Value::ModuleVal; - } - - virtual void print(std::ostream &OS) const; + void print(std::ostream &OS) const; // dropAllReferences() - This function causes all the subinstructions to "let // go" of all references that they are maintaining. This allows one to -- cgit v1.1