aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Module.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-04-28 04:45:48 +0000
committerChris Lattner <sabre@nondot.org>2002-04-28 04:45:48 +0000
commit6b5689ed55bef1a6cf358dbb1016871d2237e1e6 (patch)
treeb056f1ccb82bda154df7b68c7980da5303df484e /include/llvm/Module.h
parent785bfcca13409e061744baf1ed7ab9594060115b (diff)
downloadexternal_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/llvm/Module.h')
-rw-r--r--include/llvm/Module.h36
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