Fix PR3855. When we encounter an incompatible redeclaration of a
library function, accept this declaration and pretend that we do not
know that this is a library function. autoconf depends on this
(broken) behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67541 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 89375d7..bcb21c3 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -747,11 +747,14 @@
     if (Context.BuiltinInfo.isPredefinedLibFunction(BuiltinID)) {
       // The function the user is redeclaring is a library-defined
       // function like 'malloc' or 'printf'. Warn about the
-      // redeclaration, then ignore it.
+      // redeclaration, then pretend that we don't know about this
+      // library built-in.
       Diag(New->getLocation(), diag::warn_redecl_library_builtin) << New;
       Diag(Old->getLocation(), diag::note_previous_builtin_declaration)
         << Old << Old->getType();
-      return true;
+      New->getIdentifier()->setBuiltinID(Builtin::NotBuiltin);
+      Old->setInvalidDecl();
+      return false;
     }
 
     PrevDiag = diag::note_previous_builtin_declaration;