mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-25 21:00:00 +00:00
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:
parent
7d4e989da9
commit
7b451cf356
@ -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]))
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user