diff --git a/lib/CodeGen/InstrSched/SchedGraph.cpp b/lib/CodeGen/InstrSched/SchedGraph.cpp
index 86c9c45..9de0434 100644
--- a/lib/CodeGen/InstrSched/SchedGraph.cpp
+++ b/lib/CodeGen/InstrSched/SchedGraph.cpp
@@ -44,8 +44,7 @@
 
 SchedGraphNode::SchedGraphNode(unsigned NID, MachineBasicBlock *mbb,
                                int   indexInBB, const TargetMachine& Target)
-  : SchedGraphNodeCommon(NID), origIndexInBB(indexInBB), MBB(mbb), 
-    MI(mbb ? (*mbb)[indexInBB] : 0) {
+  : SchedGraphNodeCommon(NID,indexInBB), MBB(mbb), MI(mbb ? (*mbb)[indexInBB] : 0) {
   if (MI) {
     MachineOpCode mopCode = MI->getOpCode();
     latency = Target.getInstrInfo().hasResultInterlock(mopCode)
diff --git a/lib/CodeGen/InstrSched/SchedGraph.h b/lib/CodeGen/InstrSched/SchedGraph.h
index 441aad1..4da761f 100644
--- a/lib/CodeGen/InstrSched/SchedGraph.h
+++ b/lib/CodeGen/InstrSched/SchedGraph.h
@@ -26,7 +26,6 @@
 
 class SchedGraphNode : public SchedGraphNodeCommon {
 
-  int origIndexInBB;            // original position of machine instr in BB
   MachineBasicBlock *MBB;
   const MachineInstr *MI;
 
@@ -46,7 +45,6 @@
   bool isDummyNode() const { return (MI == NULL); }
   MachineBasicBlock &getMachineBasicBlock() const { return *MBB; }
 
-  int getOrigIndexInBB() const { return origIndexInBB; }
   void print(std::ostream &os) const;
 };
 
diff --git a/lib/Target/SparcV9/InstrSched/SchedGraph.cpp b/lib/Target/SparcV9/InstrSched/SchedGraph.cpp
index 86c9c45..9de0434 100644
--- a/lib/Target/SparcV9/InstrSched/SchedGraph.cpp
+++ b/lib/Target/SparcV9/InstrSched/SchedGraph.cpp
@@ -44,8 +44,7 @@
 
 SchedGraphNode::SchedGraphNode(unsigned NID, MachineBasicBlock *mbb,
                                int   indexInBB, const TargetMachine& Target)
-  : SchedGraphNodeCommon(NID), origIndexInBB(indexInBB), MBB(mbb), 
-    MI(mbb ? (*mbb)[indexInBB] : 0) {
+  : SchedGraphNodeCommon(NID,indexInBB), MBB(mbb), MI(mbb ? (*mbb)[indexInBB] : 0) {
   if (MI) {
     MachineOpCode mopCode = MI->getOpCode();
     latency = Target.getInstrInfo().hasResultInterlock(mopCode)
diff --git a/lib/Target/SparcV9/InstrSched/SchedGraph.h b/lib/Target/SparcV9/InstrSched/SchedGraph.h
index 441aad1..4da761f 100644
--- a/lib/Target/SparcV9/InstrSched/SchedGraph.h
+++ b/lib/Target/SparcV9/InstrSched/SchedGraph.h
@@ -26,7 +26,6 @@
 
 class SchedGraphNode : public SchedGraphNodeCommon {
 
-  int origIndexInBB;            // original position of machine instr in BB
   MachineBasicBlock *MBB;
   const MachineInstr *MI;
 
@@ -46,7 +45,6 @@
   bool isDummyNode() const { return (MI == NULL); }
   MachineBasicBlock &getMachineBasicBlock() const { return *MBB; }
 
-  int getOrigIndexInBB() const { return origIndexInBB; }
   void print(std::ostream &os) const;
 };
 
