search for: finishsubprogramdefinition

Displaying 4 results from an estimated 4 matches for "finishsubprogramdefinition".

2016 May 08
2
Debug info scope of explicit casting type does not seem correct
...<------------- In our case the function returns here, and does not apply attributes. applySubprogramAttributes(SP, SPDie); return &SPDie; } It assumes that later when the function is finalized the attributes will be applied, which is called from this code: void DwarfDebug::finishSubprogramDefinitions() { for (auto &F : MMI->getModule()->functions()) if (auto *SP = F.getSubprogram()) if (ProcessedSPNodes.count(SP) && SP->getUnit()->getEmissionKind() != DICompileUnit::NoDebug) forBothCUs(*CUMap.lookup(SP->getUnit()), [&](DwarfCompileUn...
2016 May 07
2
Debug info scope of explicit casting type does not seem correct
Hi David, OK, I got that DIE in Compile Unit scope may point to a DIE in subprogram scope. But how about that we are emitting a subprogram entry that has no attributes? 0x0000002b: DW_TAG_subprogram [3] * 0x0000002c: DW_TAG_typedef [4] DW_AT_type [DW_FORM_ref4] (cu + 0x0040 => {0x00000040}) DW_AT_name [DW_FORM_strp] (
2015 Sep 01
2
RFC: DI: Stop preserving types from dead functions
Way back in r107027, we started preserving type information of local variables of functions that are optimized away. This seemed strange to me so I dug into the history: apparently, this is so that ctfconvert can find these types (so they can be exposed in dtrace). E.g., this commit made it so that for this C code: static void foo(void) { struct X { int b; } v; } we always get the type
2014 Aug 27
6
[LLVMdev] Minimizing -gmlt
....getNumElements(); i != e; ++i) - SPMap.insert(std::make_pair(SPs.getElement(i), &CU)); DIArray EnumTypes = CUNode.getEnumTypes(); for (unsigned i = 0, e = EnumTypes.getNumElements(); i != e; ++i) { DIType Ty(EnumTypes.getElement(i)); @@ -833,12 +838,13 @@ void DwarfDebug::finishSubprogramDefinitions() { // If this subprogram has an abstract definition, reference that SPCU->addDIEEntry(*D, dwarf::DW_AT_abstract_origin, *AbsSPDIE); } else { - if (!D) + if (!D && TheCU.getEmissionKind() != DIBuilder::LineTablesOnly) // Lazily const...