aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/Decl.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-02-25 16:33:18 +0000
committerDouglas Gregor <dgregor@apple.com>2009-02-25 16:33:18 +0000
commit2224f84658fb9b3725a31f2680edb64ae73bf705 (patch)
treed8b3f0a9bfc05c8565e35df1c47b5cc649377136 /lib/AST/Decl.cpp
parent70f2a0485dd81e6684553eb5537a27db4176ed45 (diff)
C99 DR #316 implies that the function parameter types that are known
only from a function definition (that does not have a prototype) are only used to determine the compatible with other declarations of that same function. In particular, when referencing the function we pretend as if it does not have a prototype. Implement this behavior, which fixes PR3626. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65460 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Decl.cpp')
-rw-r--r--lib/AST/Decl.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index 9bf35ee83d..2732bf93c1 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -75,9 +75,13 @@ FunctionDecl *FunctionDecl::Create(ASTContext &C, DeclContext *DC,
SourceLocation L,
DeclarationName N, QualType T,
StorageClass S, bool isInline,
+ bool hasPrototype,
SourceLocation TypeSpecStartLoc) {
- return new (C) FunctionDecl(Function, DC, L, N, T, S, isInline,
- TypeSpecStartLoc);
+ FunctionDecl *New
+ = new (C) FunctionDecl(Function, DC, L, N, T, S, isInline,
+ TypeSpecStartLoc);
+ New->HasPrototype = hasPrototype;
+ return New;
}
BlockDecl *BlockDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L) {