diff --git a/utils/TableGen/CodeGenInstruction.cpp b/utils/TableGen/CodeGenInstruction.cpp
index 4d86937..ea01d1b 100644
--- a/utils/TableGen/CodeGenInstruction.cpp
+++ b/utils/TableGen/CodeGenInstruction.cpp
@@ -76,7 +76,6 @@
 
 CodeGenInstruction::CodeGenInstruction(Record *R, const std::string &AsmStr)
   : TheDef(R), AsmString(AsmStr) {
-  Name      = R->getValueAsString("Name");
   Namespace = R->getValueAsString("Namespace");
 
   isReturn     = R->getValueAsBit("isReturn");
@@ -214,14 +213,6 @@
   }
 }
 
-/// getName - Return the contents of the instruction Name field if set,
-/// otherwise return the name of the def.
-std::string CodeGenInstruction::getName() const {
-  if (!Name.empty()) return Name;
-  return TheDef->getName();
-}
-
-
 /// getOperandNamed - Return the index of the operand with the specified
 /// non-empty name.  If the instruction does not have an operand with the
 /// specified name, throw an exception.
diff --git a/utils/TableGen/CodeGenInstruction.h b/utils/TableGen/CodeGenInstruction.h
index 5c43552..351a880 100644
--- a/utils/TableGen/CodeGenInstruction.h
+++ b/utils/TableGen/CodeGenInstruction.h
@@ -26,17 +26,12 @@
   class CodeGenInstruction {
   public:
     Record *TheDef;            // The actual record defining this instruction.
-    std::string Name;          // Contents of the 'Name' field.
     std::string Namespace;     // The namespace the instruction is in.
 
     /// AsmString - The format string used to emit a .s file for the
     /// instruction.
     std::string AsmString;
     
-    /// getName - Return the contents of the instruction Name field if set,
-    /// otherwise return the name of the def.
-    std::string getName() const;
-    
     /// OperandInfo - The information we keep track of for each operand in the
     /// operand list for a tablegen instruction.
     struct OperandInfo {
diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp
index 6d08b20..40dd1f0 100644
--- a/utils/TableGen/InstrInfoEmitter.cpp
+++ b/utils/TableGen/InstrInfoEmitter.cpp
@@ -205,7 +205,7 @@
       fprintf(stderr, 
               "Warning: mayStore flag explicitly set on instruction '%s'"
               " but flag already inferred from pattern.\n", 
-              Inst.getName().c_str());
+              Inst.TheDef->getName().c_str());
     mayStore = true;
   }
 
@@ -285,7 +285,7 @@
   InferFromPattern(Inst, mayStore, isLoad, NeverHasSideEffects);
   
   if (NeverHasSideEffects && Inst.mayHaveSideEffects) {
-    std::cerr << "error: Instruction '" << Inst.getName()
+    std::cerr << "error: Instruction '" << Inst.TheDef->getName()
       << "' is marked with 'mayHaveSideEffects', but it can never have them!\n";
     exit(1);
   }
@@ -298,7 +298,7 @@
   
   OS << "  { ";
   OS << Num << ",\t" << MinOperands << ",\t"
-     << Inst.NumDefs << ",\t\"" << Inst.getName();
+     << Inst.NumDefs << ",\t\"" << Inst.TheDef->getName();
   OS << "\",\t" << getItinClassNumber(Inst.TheDef) << ", 0";
 
   // Emit all of the target indepedent flags...
