diff --git a/docs/TableGen/LangRef.rst b/docs/TableGen/LangRef.rst
index e3db3aa..f86f062 100644
--- a/docs/TableGen/LangRef.rst
+++ b/docs/TableGen/LangRef.rst
@@ -85,7 +85,7 @@ delimited by ``[{`` and ``}]``.
 TableGen also has the following keywords::
 
    bit   bits      class   code         dag
-   def   foreach   defm    field        in
+   def   foreach   defm    in
    int   let       list    multiclass   string
 
 TableGen also has "bang operators" which have a
@@ -144,8 +144,6 @@ when the record is parsed.
 Declarations
 ------------
 
-.. Omitting mention of arcane "field" prefix to discourage its use.
-
 The declaration syntax is pretty much what you would expect as a C++
 programmer.
 
diff --git a/include/llvm/TableGen/Record.h b/include/llvm/TableGen/Record.h
index 2bed006..0a3c7da 100644
--- a/include/llvm/TableGen/Record.h
+++ b/include/llvm/TableGen/Record.h
@@ -1337,11 +1337,10 @@ public:
 class RecordVal {
   Init *Name;
   RecTy *Ty;
-  unsigned Prefix;
   Init *Value;
 public:
-  RecordVal(Init *N, RecTy *T, unsigned P);
-  RecordVal(const std::string &N, RecTy *T, unsigned P);
+  RecordVal(Init *N, RecTy *T);
+  RecordVal(const std::string &N, RecTy *T);
 
   const std::string &getName() const;
   const Init *getNameInit() const { return Name; }
@@ -1349,7 +1348,6 @@ public:
     return getNameInit()->getAsUnquotedString();
   }
 
-  unsigned getPrefix() const { return Prefix; }
   RecTy *getType() const { return Ty; }
   Init *getValue() const { return Value; }
 
diff --git a/lib/TableGen/Record.cpp b/lib/TableGen/Record.cpp
index a43665b..897e17b 100644
--- a/lib/TableGen/Record.cpp
+++ b/lib/TableGen/Record.cpp
@@ -1627,8 +1627,8 @@ std::string DagInit::getAsString() const {
 //    Other implementations
 //===----------------------------------------------------------------------===//
 
-RecordVal::RecordVal(Init *N, RecTy *T, unsigned P)
-  : Name(N), Ty(T), Prefix(P) {
+RecordVal::RecordVal(Init *N, RecTy *T)
+  : Name(N), Ty(T) {
   Value = Ty->convertValue(UnsetInit::get());
   assert(Value && "Cannot create unset value for current type!");
 }
@@ -1648,7 +1648,6 @@ const std::string &RecordVal::getName() const {
 void RecordVal::dump() const { errs() << *this; }
 
 void RecordVal::print(raw_ostream &OS, bool PrintSem) const {
-  if (getPrefix()) OS << "field ";
   OS << *getType() << " " << getNameInitAsString();
 
   if (getValue())
@@ -1770,12 +1769,8 @@ raw_ostream &llvm::operator<<(raw_ostream &OS, const Record &R) {
 
   const std::vector<RecordVal> &Vals = R.getValues();
   for (unsigned i = 0, e = Vals.size(); i != e; ++i)
-    if (Vals[i].getPrefix() && !R.isTemplateArg(Vals[i].getName()))
+    if (!R.isTemplateArg(Vals[i].getName()))
       OS << Vals[i];
-  for (unsigned i = 0, e = Vals.size(); i != e; ++i)
-    if (!Vals[i].getPrefix() && !R.isTemplateArg(Vals[i].getName()))
-      OS << Vals[i];
-
   return OS << "}\n";
 }
 
diff --git a/lib/TableGen/TGLexer.h b/lib/TableGen/TGLexer.h
index d1bd70d..f151b44 100644
--- a/lib/TableGen/TGLexer.h
+++ b/lib/TableGen/TGLexer.h
@@ -43,7 +43,7 @@ namespace tgtok {
     paste,              // #
 
     // Keywords.
-    Bit, Bits, Class, Code, Dag, Def, Foreach, Defm, Field, In, Int, Let, List,
+    Bit, Bits, Class, Code, Dag, Def, Foreach, Defm, In, Int, Let, List,
     MultiClass, String,
     
     // !keywords.
diff --git a/lib/TableGen/TGParser.cpp b/lib/TableGen/TGParser.cpp
index 4ba769c..401bd5b 100644
--- a/lib/TableGen/TGParser.cpp
+++ b/lib/TableGen/TGParser.cpp
@@ -1662,10 +1662,6 @@ std::vector<Init*> TGParser::ParseValueList(Record *CurRec, Record *ArgsRec,
 ///
 Init *TGParser::ParseDeclaration(Record *CurRec,
                                        bool ParsingTemplateArgs) {
-  // Read the field prefix if present.
-  bool HasField = Lex.getCode() == tgtok::Field;
-  if (HasField) Lex.Lex();
-
   RecTy *Type = ParseType();
   if (Type == 0) return 0;
 
@@ -1690,7 +1686,7 @@ Init *TGParser::ParseDeclaration(Record *CurRec,
   }
 
   // Add the value.
-  if (AddValue(CurRec, IdLoc, RecordVal(DeclName, Type, HasField)))
+  if (AddValue(CurRec, IdLoc, RecordVal(DeclName, Type)))
     return 0;
 
   // If a value is present, parse it.
diff --git a/test/TableGen/UnsetBitInit.td b/test/TableGen/UnsetBitInit.td
index d232293..0c2cf76 100644
--- a/test/TableGen/UnsetBitInit.td
+++ b/test/TableGen/UnsetBitInit.td
@@ -1,7 +1,7 @@
 // RUN: llvm-tblgen %s
 // XFAIL: vg_leak
 class x {
-  field bits<32> A;
+  bits<32> A;
 }
 
 class y<bits<2> B> : x {
