diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-02-25 16:33:18 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-02-25 16:33:18 +0000 |
commit | 2224f84658fb9b3725a31f2680edb64ae73bf705 (patch) | |
tree | d8b3f0a9bfc05c8565e35df1c47b5cc649377136 /lib/AST/Decl.cpp | |
parent | 70f2a0485dd81e6684553eb5537a27db4176ed45 (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.cpp | 8 |
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) { |