[DWARF] Fix debug info generation for function static variables, typedefs, and records

Function static variables, typedefs and records (class, struct or union) declared inside
a lexical scope were associated with the function as their parent scope, rather than the
lexical scope they are defined or declared in.

This fixes PR19238

Patch by: amjad.aboud@intel.com
Differential Revision: http://reviews.llvm.org/D9758

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241153 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Michael Kuperstein
2015-07-01 12:33:11 +00:00
parent 5020a9198d
commit 37cb5f1c2d
8 changed files with 194 additions and 35 deletions

View File

@@ -77,8 +77,11 @@ public:
/// Apply the DW_AT_stmt_list from this compile unit to the specified DIE.
void applyStmtList(DIE &D);
/// getOrCreateGlobalVariableDIE - get or create global variable DIE.
DIE *getOrCreateGlobalVariableDIE(const DIGlobalVariable *GV);
/// Get or create global variable DIE.
/// \param GV Global Variable Node
/// \param ContextDIE DIE scope for GV Node, if available.
DIE *getOrCreateGlobalVariableDIE(const DIGlobalVariable *GV,
DIE *ContextDIE = nullptr);
/// addLabelAddress - Add a dwarf label attribute data and value using
/// either DW_FORM_addr or DW_FORM_GNU_addr_index.