Have the DbgVariable "isArtificial" and "isObjectPointer" not

care about it being an argument variable so that we can decide
that captured block and lambda vars that don't happen to
be arguments could be an argument pointer.

Add the object pointer for one case onto the subprogram die.

rdar://12001329

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164419 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2012-09-21 22:18:52 +00:00
parent 7d4e989da9
commit 7b451cf356
2 changed files with 5 additions and 5 deletions

View File

@ -515,8 +515,10 @@ DIE *DwarfDebug::constructScopeDIE(CompileUnit *TheCU, LexicalScope *Scope) {
const SmallVector<DbgVariable *, 8> &Variables = ScopeVariables.lookup(Scope);
for (unsigned i = 0, N = Variables.size(); i < N; ++i)
if (DIE *Variable =
TheCU->constructVariableDIE(Variables[i], Scope->isAbstractScope()))
TheCU->constructVariableDIE(Variables[i], Scope->isAbstractScope())) {
Children.push_back(Variable);
if (Variables[i]->isObjectPointer()) ObjectPointer = Variable;
}
const SmallVector<LexicalScope *, 4> &Scopes = Scope->getChildren();
for (unsigned j = 0, M = Scopes.size(); j < M; ++j)
if (DIE *Nested = constructScopeDIE(TheCU, Scopes[j]))

View File

@ -159,8 +159,7 @@ public:
bool isArtificial() const {
if (Var.isArtificial())
return true;
if (Var.getTag() == dwarf::DW_TAG_arg_variable
&& getType().isArtificial())
if (getType().isArtificial())
return true;
return false;
}
@ -168,8 +167,7 @@ public:
bool isObjectPointer() const {
if (Var.isObjectPointer())
return true;
if (Var.getTag() == dwarf::DW_TAG_arg_variable
&& getType().isObjectPointer())
if (getType().isObjectPointer())
return true;
return false;
}