diff --git a/llvm/include/llvm/BuildDFG/BuildDFG.h b/llvm/include/llvm/BuildDFG/BuildDFG.h
index 9bbd30f0b6ed0556fb14f82a7db9a970271a1121..b5b70bdbc57abef89a55ed1a65779a3318ec57b8 100644
--- a/llvm/include/llvm/BuildDFG/BuildDFG.h
+++ b/llvm/include/llvm/BuildDFG/BuildDFG.h
@@ -24,11 +24,12 @@ namespace builddfg {
     static char ID; // Pass identification, replacement for typeid
     BuildDFG() : ModulePass(ID) {}
 
+    typedef ValueMap<Value*, DFNode*> HandleToDFNode;
+    typedef ValueMap<Value*, DFEdge*> HandleToDFEdge;
+
     private:
     // Member variables
     DFInternalNode *Root;
-    typedef ValueMap<Value*, DFNode*> HandleToDFNode;
-    typedef ValueMap<Value*, DFEdge*> HandleToDFEdge;
 
     HandleToDFNode HandleToDFNodeMap;   // This map associates the i8* pointer
                                         // with the DFNode structure that it
@@ -49,6 +50,10 @@ namespace builddfg {
     public:
     virtual bool runOnModule(Module &M);
 
+    const DFInternalNode *getRoot();
+    const HandleToDFNode &getHandleToDFNodeMap();
+    const HandleToDFEdge &getHandleToDFEdgeMap();
+
   };
 
 } // End of namespace
diff --git a/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp b/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp
index 76f0e905bce05e44c427722b215438383756b495..10acd2699806259111d9783290a242bbaa1f317c 100644
--- a/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp
+++ b/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp
@@ -71,6 +71,17 @@ namespace builddfg {
     return false; //TODO: What does returning "false" mean?
   }
 
+  const DFInternalNode *BuildDFG::getRoot() {
+    return Root;
+  }
+
+  const BuildDFG::HandleToDFNode &BuildDFG::getHandleToDFNodeMap() {
+    return HandleToDFNodeMap;
+  }
+
+  const BuildDFG::HandleToDFEdge &BuildDFG::getHandleToDFEdgeMap() {
+    return HandleToDFEdgeMap;
+  }
 
   // Returns true if instruction I is a visc launch intrinsic, false otherwise
   bool BuildDFG::isViscLaunchIntrinsic(Instruction* I) {