aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/Decl.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-02-17 03:23:10 +0000
committerDouglas Gregor <dgregor@apple.com>2009-02-17 03:23:10 +0000
commit9add31798f621f843233dbff8bba103fca64447b (patch)
tree231b324f975bfb9bd2db0e66c3f6d3b6d0440b4e /lib/AST/Decl.cpp
parent85b2a47ec0450ee78b2c36ec482179cb4743bff7 (diff)
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
Diffstat (limited to 'lib/AST/Decl.cpp')
-rw-r--r--lib/AST/Decl.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index ca1fa0c1e1..387f79a013 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -271,6 +271,10 @@ unsigned FunctionDecl::getBuiltinID(ASTContext &Context) const {
// 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 &&