diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
index 65d3008..5b6d8ac 100644
--- a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
@@ -202,10 +202,9 @@
 
 /// EmitNode - Generate machine code for an node and needed dependencies.
 ///
-void ScheduleDAG::EmitNode(NodeInfo *NI, 
+void ScheduleDAG::EmitNode(SDNode *Node, 
                            std::map<SDNode*, unsigned> &VRBaseMap) {
   unsigned VRBase = 0;                 // First virtual register for node
-  SDNode *Node = NI->Node;
   
   // If machine instruction
   if (Node->isTargetOpcode()) {
@@ -396,9 +395,9 @@
     NodeInfo *NI = Ordering[i];
     if (NI->isInGroup()) {
       NodeGroupIterator NGI(Ordering[i]);
-      while (NodeInfo *NI = NGI.next()) EmitNode(NI, VRBaseMap);
+      while (NodeInfo *NI = NGI.next()) EmitNode(NI->Node, VRBaseMap);
     } else {
-      EmitNode(NI, VRBaseMap);
+      EmitNode(NI->Node, VRBaseMap);
     }
   }
 }
diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp
index bf0277b..f9bb198 100644
--- a/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp
+++ b/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp
@@ -613,11 +613,9 @@
   std::map<SDNode*, unsigned> VRBaseMap;
   for (unsigned i = 0, e = Sequence.size(); i != e; i++) {
     if (SUnit *SU = Sequence[i]) {
-      for (unsigned j = 0, ee = SU->FlaggedNodes.size(); j != ee; j++) {
-        SDNode *N = SU->FlaggedNodes[j];
-        EmitNode(getNI(N), VRBaseMap);
-      }
-      EmitNode(getNI(SU->Node), VRBaseMap);
+      for (unsigned j = 0, ee = SU->FlaggedNodes.size(); j != ee; j++)
+        EmitNode(SU->FlaggedNodes[j], VRBaseMap);
+      EmitNode(SU->Node, VRBaseMap);
     } else {
       // Null SUnit* is a noop.
       EmitNoop();
@@ -641,9 +639,6 @@
 void ScheduleDAGList::Schedule() {
   DEBUG(std::cerr << "********** List Scheduling **********\n");
 
-  // Set up minimum info for scheduling
-  PrepareNodeInfo();
-  
   // Build scheduling units.
   BuildSchedUnits();
   
