Static variables and functions won't collide with standard library
functions, so if we're declaring a static we should implicitly declare
a library function by the same name (e.g., malloc, strdup). Fixes PR3592.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64736 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index ca1fa0c..387f79a 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -271,6 +271,10 @@
   // function. Determine whether it actually refers to the C library
   // function or whether it just has the same name.
 
+  // If this is a static function, it's not a builtin.
+  if (getStorageClass() == Static)
+    return 0;
+
   // If this function is at translation-unit scope and we're not in
   // C++, it refers to the C library function.
   if (!Context.getLangOptions().CPlusPlus &&