diff --git a/lib/Target/SparcV9/SparcV9CodeEmitter.cpp b/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
index 4f4f0b3..271dcf1 100644
--- a/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
+++ b/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
@@ -757,10 +757,10 @@
         if (op.isHiBits64()) { hiBits64=true; }
         MI->SetMachineOperandConst(ii, MachineOperand::MO_SignExtendedImmed,
                                    branchTarget);
-        if (loBits32) { MI->setOperandLo32(ii); }
-        else if (hiBits32) { MI->setOperandHi32(ii); }
-        else if (loBits64) { MI->setOperandLo64(ii); }
-        else if (hiBits64) { MI->setOperandHi64(ii); }
+        if (loBits32) { MI->getOperand(ii).markLo32(); }
+        else if (hiBits32) { MI->getOperand(ii).markHi32(); }
+        else if (loBits64) { MI->getOperand(ii).markLo64(); }
+        else if (hiBits64) { MI->getOperand(ii).markHi64(); }
         DEBUG(std::cerr << "Rewrote BB ref: ");
         unsigned fixedInstr = SparcV9CodeEmitter::getBinaryCodeForInstr(*MI);
         MCE.emitWordAt (fixedInstr, Ref);
diff --git a/lib/Target/SparcV9/SparcV9InstrInfo.cpp b/lib/Target/SparcV9/SparcV9InstrInfo.cpp
index 30d3554..f672b5d 100644
--- a/lib/Target/SparcV9/SparcV9InstrInfo.cpp
+++ b/lib/Target/SparcV9/SparcV9InstrInfo.cpp
@@ -164,7 +164,7 @@
   // Set the high 22 bits in dest if non-zero and simm13 field of OR not enough
   if (!smallNegValue && (C & ~MAXLO) && C > MAXSIMM) {
     miSETHI = BuildMI(V9::SETHI, 2).addZImm(C).addRegDef(dest);
-    miSETHI->setOperandHi32(0);
+    miSETHI->getOperand(0).markHi32();
     mvec.push_back(miSETHI);
   }
   
@@ -174,7 +174,7 @@
     if (miSETHI) {
       // unsigned value with high-order bits set using SETHI
       miOR = BuildMI(V9::ORi,3).addReg(dest).addZImm(C).addRegDef(dest);
-      miOR->setOperandLo32(1);
+      miOR->getOperand(1).markLo32();
     } else {
       // unsigned or small signed value that fits in simm13 field of OR
       assert(smallNegValue || (C & ~MAXSIMM) == 0);
@@ -261,12 +261,12 @@
   
   // Set the high 22 bits in dest
   MI = BuildMI(V9::SETHI, 2).addReg(val).addRegDef(dest);
-  MI->setOperandHi32(0);
+  MI->getOperand(0).markHi32();
   mvec.push_back(MI);
   
   // Set the low 10 bits in dest
   MI = BuildMI(V9::ORr, 3).addReg(dest).addReg(val).addRegDef(dest);
-  MI->setOperandLo32(1);
+  MI->getOperand(1).markLo32();
   mvec.push_back(MI);
 }
 
@@ -288,24 +288,24 @@
   MachineInstr* MI;
   
   MI = BuildMI(V9::SETHI, 2).addPCDisp(val).addRegDef(tmpReg);
-  MI->setOperandHi64(0);
+  MI->getOperand(0).markHi64();
   mvec.push_back(MI);
   
   MI = BuildMI(V9::ORi, 3).addReg(tmpReg).addPCDisp(val).addRegDef(tmpReg);
-  MI->setOperandLo64(1);
+  MI->getOperand(1).markLo64();
   mvec.push_back(MI);
   
   mvec.push_back(BuildMI(V9::SLLXi6, 3).addReg(tmpReg).addZImm(32)
                  .addRegDef(tmpReg));
   MI = BuildMI(V9::SETHI, 2).addPCDisp(val).addRegDef(dest);
-  MI->setOperandHi32(0);
+  MI->getOperand(0).markHi32();
   mvec.push_back(MI);
   
   MI = BuildMI(V9::ORr, 3).addReg(dest).addReg(tmpReg).addRegDef(dest);
   mvec.push_back(MI);
   
   MI = BuildMI(V9::ORi, 3).addReg(dest).addPCDisp(val).addRegDef(dest);
-  MI->setOperandLo32(1);
+  MI->getOperand(1).markLo32();
   mvec.push_back(MI);
 }
 
@@ -512,18 +512,18 @@
     MachineInstr* MI;
   
     MI = BuildMI(V9::SETHI, 2).addConstantPoolIndex(CPI).addRegDef(tmpReg);
-    MI->setOperandHi64(0);
+    MI->getOperand(0).markHi64();
     mvec.push_back(MI);
   
     MI = BuildMI(V9::ORi, 3).addReg(tmpReg).addConstantPoolIndex(CPI)
       .addRegDef(tmpReg);
-    MI->setOperandLo64(1);
+    MI->getOperand(1).markLo64();
     mvec.push_back(MI);
   
     mvec.push_back(BuildMI(V9::SLLXi6, 3).addReg(tmpReg).addZImm(32)
                    .addRegDef(tmpReg));
     MI = BuildMI(V9::SETHI, 2).addConstantPoolIndex(CPI).addRegDef(addrReg);
-    MI->setOperandHi32(0);
+    MI->getOperand(0).markHi32();
     mvec.push_back(MI);
   
     MI = BuildMI(V9::ORr, 3).addReg(addrReg).addReg(tmpReg).addRegDef(addrReg);
@@ -531,7 +531,7 @@
   
     MI = BuildMI(V9::ORi, 3).addReg(addrReg).addConstantPoolIndex(CPI)
       .addRegDef(addrReg);
-    MI->setOperandLo32(1);
+    MI->getOperand(1).markLo32();
     mvec.push_back(MI);
 
     // Now load the constant from out ConstantPool label
diff --git a/lib/Target/SparcV9/SparcV9PrologEpilogInserter.cpp b/lib/Target/SparcV9/SparcV9PrologEpilogInserter.cpp
index d6b34b6..d852dee 100644
--- a/lib/Target/SparcV9/SparcV9PrologEpilogInserter.cpp
+++ b/lib/Target/SparcV9/SparcV9PrologEpilogInserter.cpp
@@ -93,12 +93,12 @@
 
     MachineInstr* M = BuildMI(V9::SETHI, 2).addSImm(C)
       .addMReg(uregNum, MachineOperand::Def);
-    M->setOperandHi32(0);
+    M->getOperand(0).markHi32();
     mvec.push_back(M);
     
     M = BuildMI(V9::ORi, 3).addMReg(uregNum).addSImm(C)
       .addMReg(uregNum, MachineOperand::Def);
-    M->setOperandLo32(1);
+    M->getOperand(1).markLo32();
     mvec.push_back(M);
     
     M = BuildMI(V9::SRAi5, 3).addMReg(uregNum).addZImm(0)
