aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/AsmPrinter
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2012-09-21 22:18:52 +0000
committerEric Christopher <echristo@apple.com>2012-09-21 22:18:52 +0000
commit7b451cf35613cd4dbed1cd2053464b28974571fc (patch)
treee8d15efbefd5763eb125409c4f5584e68c9602a4 /lib/CodeGen/AsmPrinter
parent7d4e989da972c2e9c89dad2d4e8f6ff9e1c73394 (diff)
downloadexternal_llvm-7b451cf35613cd4dbed1cd2053464b28974571fc.zip
external_llvm-7b451cf35613cd4dbed1cd2053464b28974571fc.tar.gz
external_llvm-7b451cf35613cd4dbed1cd2053464b28974571fc.tar.bz2
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
Diffstat (limited to 'lib/CodeGen/AsmPrinter')
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.cpp4
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.h6
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 52fae53..52b10d7 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -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]))
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h
index d5ae468..20e232d 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -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;
}