Fully handle globals and functions in CGDebugInfo::getDeclarationOrDefinition()
authorFrederic Riss <friss@apple.com>
Tue, 18 Nov 2014 03:40:51 +0000 (03:40 +0000)
committerFrederic Riss <friss@apple.com>
Tue, 18 Nov 2014 03:40:51 +0000 (03:40 +0000)
commitd253ed6565dff2415d4cd923b80ee82ca6ee5534
tree9319e5ff10063c87897dc8ebaaafaf71994a0227
parent9db79f17c09c6f73f2595c4a8adf312c4c769f57
Fully handle globals and functions in CGDebugInfo::getDeclarationOrDefinition()

Currently this function would return nothing for functions or globals that
haven't seen a definition yet. Make it return a forward declaration that will
get RAUWed with the definition if one is seen at a later point. The strategy
used to implement this is similar to what's done for types: the forward
declarations are stored in a vector and post processed upon finilization to
perform the required RAUWs.

For now the only user of getDeclarationOrDefinition() is EmitUsingDecl(), thus
this patch allows to emit correct imported declarations even in the absence of
an actual definition of the imported entity.

(Another user will be the debug info generation for argument default values
that I need to resurect).

Differential Revision: http://reviews.llvm.org/D6173

llvm-svn: 222220
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/CodeGen/CGDebugInfo.h
clang/test/CodeGenCXX/debug-info-namespace.cpp