summaryrefslogtreecommitdiff
path: root/lib/CodeGen/AsmPrinter/DwarfDebug.h
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2013-09-10 18:40:41 +0000
committerManman Ren <manman.ren@gmail.com>2013-09-10 18:40:41 +0000
commitfd2210a78dc621d3fb5c3613ff59b341041b3a4b (patch)
tree9a32b6eaaf80dc83fab81eaff8747a96ab46f140 /lib/CodeGen/AsmPrinter/DwarfDebug.h
parent4f5cfba4d5734f65cfb63ea848e93c2c5f566427 (diff)
downloadllvm-fd2210a78dc621d3fb5c3613ff59b341041b3a4b.tar.gz
llvm-fd2210a78dc621d3fb5c3613ff59b341041b3a4b.tar.bz2
llvm-fd2210a78dc621d3fb5c3613ff59b341041b3a4b.tar.xz
Debug Info: create scope children DIEs when the scope DIE is not null.
We try to create the scope children DIEs after we create the scope DIE. But to avoid emitting empty lexical block DIE, we first check whether a scope DIE is going to be null, then create the scope children if it is not null. From the number of children, we decide whether to actually create the scope DIE. This patch also removes an early exit which checks for a special condition. It also removes deletion of un-used children DIEs that are generated because we used to generate children DIEs before the scope DIE. Deletion of un-used children DIEs may cause problem because we sometimes keep created DIEs in a member variable of a CU. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190421 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter/DwarfDebug.h')
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h
index 6c13b9ec6f..c702180dc3 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -469,6 +469,9 @@ private:
/// \brief Construct new DW_TAG_lexical_block for this scope and
/// attach DW_AT_low_pc/DW_AT_high_pc labels.
DIE *constructLexicalScopeDIE(CompileUnit *TheCU, LexicalScope *Scope);
+ /// A helper function to check whether the DIE for a given Scope is going
+ /// to be null.
+ bool isLexicalScopeDIENull(LexicalScope *Scope);
/// \brief This scope represents inlined body of a function. Construct
/// DIE to represent this concrete inlined copy of the function.
@@ -476,6 +479,9 @@ private:
/// \brief Construct a DIE for this scope.
DIE *constructScopeDIE(CompileUnit *TheCU, LexicalScope *Scope);
+ /// A helper function to create children of a Scope DIE.
+ DIE *createScopeChildrenDIE(CompileUnit *TheCU, LexicalScope *Scope,
+ SmallVectorImpl<DIE*> &Children);
/// \brief Emit initial Dwarf sections with a label at the start of each one.
void emitSectionLabels();