diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp
index 65892c1..0f7f6f1 100644
--- a/lib/CodeGen/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter.cpp
@@ -1215,14 +1215,14 @@
         // Scan to find the machine operand number for the operand.
         for (; Val; --Val) {
           if (OpNo >= MI->getNumOperands()) break;
-          unsigned OpFlags = MI->getOperand(OpNo).getImmedValue();
+          unsigned OpFlags = MI->getOperand(OpNo).getImm();
           OpNo += (OpFlags >> 3) + 1;
         }
 
         if (OpNo >= MI->getNumOperands()) {
           Error = true;
         } else {
-          unsigned OpFlags = MI->getOperand(OpNo).getImmedValue();
+          unsigned OpFlags = MI->getOperand(OpNo).getImm();
           ++OpNo;  // Skip over the ID number.
 
           if (Modifier[0]=='l')  // labels are target independent
@@ -1256,11 +1256,8 @@
 /// printLabel - This method prints a local label used by debug and
 /// exception handling tables.
 void AsmPrinter::printLabel(const MachineInstr *MI) const {
-  O << "\n"
-    << TAI->getPrivateGlobalPrefix()
-    << "label"
-    << MI->getOperand(0).getImmedValue()
-    << ":\n";
+  O << "\n" << TAI->getPrivateGlobalPrefix()
+    << "label" << MI->getOperand(0).getImm() << ":\n";
 }
 
 /// PrintAsmOperand - Print the specified operand of MI, an INLINEASM
diff --git a/lib/CodeGen/DwarfWriter.cpp b/lib/CodeGen/DwarfWriter.cpp
index 5ef48cc..17373fe 100644
--- a/lib/CodeGen/DwarfWriter.cpp
+++ b/lib/CodeGen/DwarfWriter.cpp
@@ -3159,7 +3159,7 @@
           continue;
         }
 
-        unsigned BeginLabel = MI->getOperand(0).getImmedValue();
+        unsigned BeginLabel = MI->getOperand(0).getImm();
         assert(BeginLabel && "Invalid label!");
 
         // End of the previous try-range?
diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp
index fc55b95..f54cbe7 100644
--- a/lib/CodeGen/MachineInstr.cpp
+++ b/lib/CodeGen/MachineInstr.cpp
@@ -288,7 +288,7 @@
     OutputReg(OS, MO.getReg(), MRI);
     break;
   case MachineOperand::MO_Immediate:
-    OS << MO.getImmedValue();
+    OS << MO.getImm();
     break;
   case MachineOperand::MO_MachineBasicBlock:
     OS << "mbb<"
@@ -398,7 +398,7 @@
     OutputReg(OS, getReg());
     break;
   case MO_Immediate:
-    OS << (long)getImmedValue();
+    OS << getImm();
     break;
   case MO_MachineBasicBlock:
     OS << "<mbb:"
diff --git a/lib/CodeGen/PrologEpilogInserter.cpp b/lib/CodeGen/PrologEpilogInserter.cpp
index 2a433e5..3f62630 100644
--- a/lib/CodeGen/PrologEpilogInserter.cpp
+++ b/lib/CodeGen/PrologEpilogInserter.cpp
@@ -147,7 +147,7 @@
           I->getOpcode() == FrameDestroyOpcode) {
         assert(I->getNumOperands() >= 1 && "Call Frame Setup/Destroy Pseudo"
                " instructions should have a single immediate argument!");
-        unsigned Size = I->getOperand(0).getImmedValue();
+        unsigned Size = I->getOperand(0).getImm();
         if (Size > MaxCallFrameSize) MaxCallFrameSize = Size;
         HasCalls = true;
         FrameSDOps.push_back(I);
@@ -516,7 +516,7 @@
       // Remember how much SP has been adjustment to create the call frame.
       if (I->getOpcode() == FrameSetupOpcode ||
           I->getOpcode() == FrameDestroyOpcode) {
-        int Size = I->getOperand(0).getImmedValue();
+        int Size = I->getOperand(0).getImm();
         if ((!StackGrowsDown && I->getOpcode() == FrameSetupOpcode) ||
             (StackGrowsDown && I->getOpcode() == FrameDestroyOpcode))
           Size = -Size;
