diff options
author | Chris Lattner <sabre@nondot.org> | 2002-04-28 04:45:48 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-04-28 04:45:48 +0000 |
commit | 6b5689ed55bef1a6cf358dbb1016871d2237e1e6 (patch) | |
tree | b056f1ccb82bda154df7b68c7980da5303df484e /include | |
parent | 785bfcca13409e061744baf1ed7ab9594060115b (diff) | |
download | external_llvm-6b5689ed55bef1a6cf358dbb1016871d2237e1e6.zip external_llvm-6b5689ed55bef1a6cf358dbb1016871d2237e1e6.tar.gz external_llvm-6b5689ed55bef1a6cf358dbb1016871d2237e1e6.tar.bz2 |
* 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
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Module.h | 36 |
1 files changed, 27 insertions, 9 deletions
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<GlobalVariable, Module, Module> GlobalListType; typedef ValueHolder<Function, Module, Module> 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 |