rename some methods and add some new methods for dealing with the globals list
authorChris Lattner <sabre@nondot.org>
Sun, 20 Mar 2005 02:38:39 +0000 (02:38 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 20 Mar 2005 02:38:39 +0000 (02:38 +0000)
in a DSNode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20701 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/DataStructure/DSNode.h

index beff5e40610eb656d8058d0201a9148f9a24367d..53865da8460f89c21d559a39a7909d9144497538 100644 (file)
@@ -285,11 +285,28 @@ public:
   void addGlobal(GlobalValue *GV);
   void mergeGlobals(const std::vector<GlobalValue*> &RHS);
   void clearGlobals() { std::vector<GlobalValue*>().swap(Globals); }
-  const std::vector<GlobalValue*> &getGlobals() const { return Globals; }
 
-  typedef std::vector<GlobalValue*>::const_iterator global_iterator;
-  global_iterator global_begin() const { return Globals.begin(); }
-  global_iterator global_end() const { return Globals.end(); }
+  /// getGlobalsList - Return the set of global leaders that are represented by
+  /// this node.  Note that globals that are in this equivalence class but are
+  /// not leaders are not returned: for that, use addFullGlobalsList().
+  const std::vector<GlobalValue*> &getGlobalsList() const { return Globals; }
+
+  /// addFullGlobalsList - Compute the full set of global values that are
+  /// represented by this node.  Unlike getGlobalsList(), this requires fair
+  /// amount of work to compute, so don't treat this method call as free.
+  void addFullGlobalsList(std::vector<GlobalValue*> &List) const;
+
+  /// addFullFunctionList - Identical to addFullGlobalsList, but only return the
+  /// functions in the full list.
+  void addFullFunctionList(std::vector<Function*> &List) const;
+
+  /// globals_iterator/begin/end - Provide iteration methods over the global
+  /// value leaders set that is merged into this node.  Like the getGlobalsList
+  /// method, these iterators do not return globals that are part of the
+  /// equivalence classes for globals in this node, but aren't leaders.
+  typedef std::vector<GlobalValue*>::const_iterator globals_iterator;
+  globals_iterator globals_begin() const { return Globals.begin(); }
+  globals_iterator globals_end() const { return Globals.end(); }
 
 
   /// maskNodeTypes - Apply a mask to the node types bitfield.