[llvm] r216787 - Stuff

Aaron Ballman aaron at aaronballman.com
Fri Aug 29 15:17:34 PDT 2014


On Fri, Aug 29, 2014 at 6:05 PM, David Blaikie <dblaikie at gmail.com> wrote:
> Author: dblaikie
> Date: Fri Aug 29 17:05:26 2014
> New Revision: 216787
>
> URL: http://llvm.org/viewvc/llvm-project?rev=216787&view=rev
> Log:
> Stuff

What about "things" instead? ;-) I suspect a commit log message was missed here.

~Aaron

>
> Modified:
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=216787&r1=216786&r2=216787&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Fri Aug 29 17:05:26 2014
> @@ -751,6 +751,11 @@ void DwarfDebug::beginModule() {
>    for (MDNode *N : CU_Nodes->operands()) {
>      DICompileUnit CUNode(N);
>      DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
> +    DIArray SPs = CUNode.getSubprograms();
> +    for (unsigned i = 0, e = SPs.getNumElements(); i != e; ++i)
> +      SPMap.insert(std::make_pair(SPs.getElement(i), &CU));
> +    if (CU.getCUNode().getEmissionKind() == DIBuilder::LineTablesOnly)
> +      continue;
>      DIArray ImportedEntities = CUNode.getImportedEntities();
>      for (unsigned i = 0, e = ImportedEntities.getNumElements(); i != e; ++i)
>        ScopesWithImportedEntities.push_back(std::make_pair(
> @@ -761,9 +766,6 @@ void DwarfDebug::beginModule() {
>      DIArray GVs = CUNode.getGlobalVariables();
>      for (unsigned i = 0, e = GVs.getNumElements(); i != e; ++i)
>        CU.createGlobalVariableDIE(DIGlobalVariable(GVs.getElement(i)));
> -    DIArray SPs = CUNode.getSubprograms();
> -    for (unsigned i = 0, e = SPs.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 +835,13 @@ void DwarfDebug::finishSubprogramDefinit
>            // 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 construct the subprogram if we didn't see either concrete or
>            // inlined versions during codegen.
>            D = SPCU->getOrCreateSubprogramDIE(SP);
> -        // And attach the attributes
> -        SPCU->applySubprogramAttributesToDefinition(SP, *D);
> +        if (D)
> +          // And attach the attributes
> +          SPCU->applySubprogramAttributesToDefinition(SP, *D);
>        }
>      }
>    }
> @@ -1667,6 +1670,17 @@ void DwarfDebug::endFunction(const Machi
>
>    LexicalScope *FnScope = LScopes.getCurrentFunctionScope();
>    DwarfCompileUnit &TheCU = *SPMap.lookup(FnScope->getScopeNode());
> +  if (TheCU.getCUNode().getEmissionKind() == DIBuilder::LineTablesOnly && LScopes.getAbstractScopesList().empty()) {
> +    assert(ScopeVariables.empty());
> +    assert(CurrentFnArguments.empty());
> +    assert(DbgValues.empty());
> +    assert(AbstractVariables.empty());
> +    LabelsBeforeInsn.clear();
> +    LabelsAfterInsn.clear();
> +    PrevLabel = nullptr;
> +    CurFn = nullptr;
> +    return;
> +  }
>
>    // Construct abstract scopes.
>    for (LexicalScope *AScope : LScopes.getAbstractScopesList()) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list