diff --git a/include/llvm/CodeGen/MachinePassRegistry.h b/include/llvm/CodeGen/MachinePassRegistry.h
index 680d2b8..6ee2e90 100644
--- a/include/llvm/CodeGen/MachinePassRegistry.h
+++ b/include/llvm/CodeGen/MachinePassRegistry.h
@@ -129,9 +129,9 @@
     // Add existing passes to option.
     for (RegistryClass *Node = RegistryClass::getList();
          Node; Node = Node->getNext()) {
-      addLiteralOption(Node->getName(),
+      this->addLiteralOption(Node->getName(),
                       (typename RegistryClass::FunctionPassCtor)Node->getCtor(),
-                      Node->getDescription());
+                             Node->getDescription());
     }
     
     // Make sure we listen for list changes.
diff --git a/lib/CodeGen/PBQP/AnnotatedGraph.h b/lib/CodeGen/PBQP/AnnotatedGraph.h
index 904061c..a47dce9 100644
--- a/lib/CodeGen/PBQP/AnnotatedGraph.h
+++ b/lib/CodeGen/PBQP/AnnotatedGraph.h
@@ -132,19 +132,19 @@
   }
 
   NodeData& getNodeData(const NodeIterator &nodeItr) {
-    return getNodeEntry(nodeItr).getNodeData();
+    return PGraph::getNodeEntry(nodeItr).getNodeData();
   }
 
   const NodeData& getNodeData(const NodeIterator &nodeItr) const {
-    return getNodeEntry(nodeItr).getNodeData();
+    return PGraph::getNodeEntry(nodeItr).getNodeData();
   }
 
   EdgeData& getEdgeData(const EdgeIterator &edgeItr) {
-    return getEdgeEntry(edgeItr).getEdgeData();
+    return PGraph::getEdgeEntry(edgeItr).getEdgeData();
   }
 
   const EdgeEntry& getEdgeData(const EdgeIterator &edgeItr) const {
-    return getEdgeEntry(edgeItr).getEdgeData();
+    return PGraph::getEdgeEntry(edgeItr).getEdgeData();
   }
 
   SimpleGraph toSimpleGraph() const {
