diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-02-09 02:03:05 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-02-09 02:03:05 +0000 |
commit | 2575631c0f76753eb61a59461e214900de47be2a (patch) | |
tree | 48610fb93fbbbe5d7d2b3d61bea738437ab4a586 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | c8ae55050dcf5becdb8a80b065ecabdd6ae59744 (diff) | |
download | bcm5719-llvm-2575631c0f76753eb61a59461e214900de47be2a.tar.gz bcm5719-llvm-2575631c0f76753eb61a59461e214900de47be2a.zip |
When IRgen refers to a function declaration that is not a definition,
and we later find the definition, make sure that we add the definition
(not the declaration) to the list of deferred definitions to
emit. Fixes PR8864.
Thanks to Nick Lewycky for testing this patch out
llvm-svn: 125157
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 89aeeb6fc79..56bc31a8587 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -857,10 +857,10 @@ CodeGenModule::GetOrCreateLLVMFunction(llvm::StringRef MangledName, if (isa<CXXRecordDecl>(FD->getLexicalDeclContext())) { if (FD->isImplicit() && !ForVTable) { assert(FD->isUsed() && "Sema didn't mark implicit function as used!"); - DeferredDeclsToEmit.push_back(D); + DeferredDeclsToEmit.push_back(D.getWithDecl(FD)); break; } else if (FD->isThisDeclarationADefinition()) { - DeferredDeclsToEmit.push_back(D); + DeferredDeclsToEmit.push_back(D.getWithDecl(FD)); break; } } |