Add support for module local constants
authorChris Lattner <sabre@nondot.org>
Sat, 13 Oct 2001 06:17:32 +0000 (06:17 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 13 Oct 2001 06:17:32 +0000 (06:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@737 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Module.h

index 823d4d82f06f1366189fd1f9a8f1b3082d83a99f..abb91e0f01370c2917d50be2bcf6d2ff80955205 100644 (file)
@@ -3,6 +3,10 @@
 // This file contains the declarations for the Module class that is used to 
 // maintain all the information related to a VM module.
 //
+// A module also maintains a GlobalValRefMap object that is used to hold all
+// constant references to global variables in the module.  When a global
+// variable is destroyed, it should have no entries in the GlobalValueRefMap.
+//
 //===----------------------------------------------------------------------===//
 
 #ifndef LLVM_MODULE_H
@@ -13,6 +17,8 @@
 #include "llvm/ValueHolder.h"
 class Method;
 class GlobalVariable;
+class GlobalValueRefMap;   // Used by ConstPoolVals.cpp
+class ConstPoolPointerReference;
 
 class Module : public Value, public SymTabValue {
 public:
@@ -35,6 +41,14 @@ private:
   GlobalListType GlobalList;     // The Global Variables
   MethodListType MethodList;     // The Methods
 
+  GlobalValueRefMap *GVRefMap;
+
+  // Accessor for the underlying GlobalValRefMap... only through the
+  // ConstPoolPointerReference class...
+  friend class ConstPoolPointerReference;
+  void mutateConstPoolPointerReference(GlobalValue *OldGV, GlobalValue *NewGV);
+  ConstPoolPointerReference *getConstPoolPointerReference(GlobalValue *GV);
+
 public:
   Module();
   ~Module();
@@ -47,7 +61,6 @@ public:
   bool reduceApply(bool (*Func)(Method*));
   bool reduceApply(bool (*Func)(const Method*)) const;
 
-
   // Get the underlying elements of the Module...
   inline const GlobalListType &getGlobalList() const  { return GlobalList; }
   inline       GlobalListType &getGlobalList()        { return GlobalList; }