diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h
index b2f18a7..a0b47c9 100644
--- a/include/clang/AST/Decl.h
+++ b/include/clang/AST/Decl.h
@@ -519,8 +519,8 @@
   bool C99InlineDefinition : 1;
   bool IsVirtual : 1;
   bool IsPure : 1;
-  bool InheritedPrototype : 1;
-  bool HasPrototype : 1;
+  bool HasInheritedPrototype : 1;
+  bool HasWrittenPrototype : 1;
   bool IsDeleted : 1;
 
   // Move to DeclGroup when it is implemented.
@@ -546,8 +546,8 @@
       DeclContext(DK),
       ParamInfo(0), Body(), PreviousDeclaration(0),
       SClass(S), IsInline(isInline), C99InlineDefinition(false), 
-      IsVirtual(false), IsPure(false), InheritedPrototype(false), 
-      HasPrototype(true), IsDeleted(false), TypeSpecStartLoc(TSSL),
+      IsVirtual(false), IsPure(false), HasInheritedPrototype(false), 
+      HasWrittenPrototype(true), IsDeleted(false), TypeSpecStartLoc(TSSL),
       TemplateOrInstantiation() {}
 
   virtual ~FunctionDecl() {}
@@ -557,7 +557,7 @@
   static FunctionDecl *Create(ASTContext &C, DeclContext *DC, SourceLocation L,
                               DeclarationName N, QualType T, 
                               StorageClass S = None, bool isInline = false,
-                              bool hasPrototype = true,
+                              bool hasWrittenPrototype = true,
                               SourceLocation TSStartLoc = SourceLocation());  
   
   SourceLocation getTypeSpecStartLoc() const { return TypeSpecStartLoc; }
@@ -604,13 +604,17 @@
   /// was explicitly written or because it was "inherited" by merging
   /// a declaration without a prototype with a declaration that has a
   /// prototype.
-  bool hasPrototype() const { return HasPrototype || InheritedPrototype; }
-  void setHasPrototype(bool P) { HasPrototype = P; }
+  bool hasPrototype() const { 
+    return HasWrittenPrototype || HasInheritedPrototype; 
+  }
+  
+  bool hasWrittenPrototype() const { return HasWrittenPrototype; }
+  void setHasWrittenPrototype(bool P) { HasWrittenPrototype = P; }
 
   /// \brief Whether this function inherited its prototype from a
   /// previous declaration.
-  bool inheritedPrototype() const { return InheritedPrototype; }
-  void setInheritedPrototype(bool P = true) { InheritedPrototype = P; }
+  bool hasInheritedPrototype() const { return HasInheritedPrototype; }
+  void setHasInheritedPrototype(bool P = true) { HasInheritedPrototype = P; }
 
   /// \brief Whether this function has been deleted.
   ///
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index 319d4d5..c62c1e2 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -123,12 +123,12 @@
                                    SourceLocation L, 
                                    DeclarationName N, QualType T, 
                                    StorageClass S, bool isInline, 
-                                   bool hasPrototype,
+                                   bool hasWrittenPrototype,
                                    SourceLocation TypeSpecStartLoc) {
   FunctionDecl *New 
     = new (C) FunctionDecl(Function, DC, L, N, T, S, isInline, 
                            TypeSpecStartLoc);
-  New->HasPrototype = hasPrototype;
+  New->HasWrittenPrototype = hasWrittenPrototype;
   return New;
 }
 
diff --git a/lib/Frontend/PCHReaderDecl.cpp b/lib/Frontend/PCHReaderDecl.cpp
index 9dd1565..45af36c 100644
--- a/lib/Frontend/PCHReaderDecl.cpp
+++ b/lib/Frontend/PCHReaderDecl.cpp
@@ -151,8 +151,8 @@
   FD->setC99InlineDefinition(Record[Idx++]);
   FD->setVirtual(Record[Idx++]);
   FD->setPure(Record[Idx++]);
-  FD->setInheritedPrototype(Record[Idx++]);
-  FD->setHasPrototype(Record[Idx++]);
+  FD->setHasInheritedPrototype(Record[Idx++]);
+  FD->setHasWrittenPrototype(Record[Idx++]);
   FD->setDeleted(Record[Idx++]);
   FD->setTypeSpecStartLoc(SourceLocation::getFromRawEncoding(Record[Idx++]));
   // FIXME: C++ TemplateOrInstantiation
diff --git a/lib/Frontend/PCHWriterDecl.cpp b/lib/Frontend/PCHWriterDecl.cpp
index 96045f9..48c7dc2 100644
--- a/lib/Frontend/PCHWriterDecl.cpp
+++ b/lib/Frontend/PCHWriterDecl.cpp
@@ -151,8 +151,8 @@
   Record.push_back(D->isC99InlineDefinition());
   Record.push_back(D->isVirtual());
   Record.push_back(D->isPure());
-  Record.push_back(D->inheritedPrototype());
-  Record.push_back(D->hasPrototype() && !D->inheritedPrototype());
+  Record.push_back(D->hasInheritedPrototype());
+  Record.push_back(D->hasWrittenPrototype());
   Record.push_back(D->isDeleted());
   Writer.AddSourceLocation(D->getTypeSpecStartLoc(), Record);
   // FIXME: C++ TemplateOrInstantiation
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 20b24d1..1c464d1 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -736,7 +736,7 @@
                                          OldProto->isVariadic(),
                                          OldProto->getTypeQuals());
       New->setType(NewQType);
-      New->setInheritedPrototype();
+      New->setHasInheritedPrototype();
 
       // Synthesize a parameter for each argument type.
       llvm::SmallVector<ParmVarDecl*, 16> Params;
