[llvm] r204790 - Fix PR19239 - Add support for generating debug info for functions without lexical scopes and/or debug info at all

Timur Iskhodzhanov timurrrr at google.com
Wed Mar 26 04:31:06 PDT 2014


See also r204795.


2014-03-26 14:00 GMT+04:00 Timur Iskhodzhanov <timurrrr at google.com>:

> Hi Eric,
>
> Can you please sanity-check?
> (The tests were landed as r204791 -- svn commits faster than I Ctrl+C...)
>
> --
> Thanks,
> Timur
>
>
> 2014-03-26 13:50 GMT+04:00 Timur Iskhodzhanov <timurrrr at google.com>:
>
> Author: timurrrr
>> Date: Wed Mar 26 04:50:36 2014
>> New Revision: 204790
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=204790&view=rev
>> Log:
>> Fix PR19239 - Add support for generating debug info for functions without
>> lexical scopes and/or debug info at all
>>
>> Modified:
>>     llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
>>     llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp?rev=204790&r1=204789&r2=204790&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp Wed Mar
>> 26 04:50:36 2014
>> @@ -131,9 +131,12 @@ void WinCodeViewLineTables::emitDebugInf
>>    // For each function there is a separate subsection
>>    // which holds the PC to file:line table.
>>    const MCSymbol *Fn = Asm->getSymbol(GV);
>> -  const FunctionInfo &FI = FnDebugInfo[GV];
>>    assert(Fn);
>> -  assert(FI.Instrs.size() > 0);
>> +
>> +  const FunctionInfo &FI = FnDebugInfo[GV];
>> +  if (FI.Instrs.empty())
>> +    return;
>> +  assert(FI.End && "Don't know where the function ends?");
>>
>>    // PCs/Instructions are grouped into segments sharing the same
>> filename.
>>    // Pre-calculate the lengths (in instructions) of these segments and
>> store
>> @@ -264,12 +267,6 @@ void WinCodeViewLineTables::beginFunctio
>>    if (!Asm || !Asm->MMI->hasDebugInfo())
>>      return;
>>
>> -  // Grab the lexical scopes for the function, if we don't have any of
>> those
>> -  // then we're not going to be able to do anything.
>> -  LScopes.initialize(*MF);
>> -  if (LScopes.empty())
>> -    return;
>> -
>>    const Function *GV = MF->getFunction();
>>    assert(FnDebugInfo.count(GV) == false);
>>    VisitedFunctions.push_back(GV);
>> @@ -311,13 +308,12 @@ void WinCodeViewLineTables::endFunction(
>>    if (!Asm || !CurFn)  // We haven't created any debug info for this
>> function.
>>      return;
>>
>> -  if (CurFn->Instrs.empty())
>> -    llvm_unreachable("Can this ever happen?");
>> -
>> -  // Define end label for subprogram.
>> -  MCSymbol *FunctionEndSym =
>> Asm->OutStreamer.getContext().CreateTempSymbol();
>> -  Asm->OutStreamer.EmitLabel(FunctionEndSym);
>> -  CurFn->End = FunctionEndSym;
>> +  if (!CurFn->Instrs.empty()) {
>> +    // Define end label for subprogram.
>> +    MCSymbol *FunctionEndSym =
>> Asm->OutStreamer.getContext().CreateTempSymbol();
>> +    Asm->OutStreamer.EmitLabel(FunctionEndSym);
>> +    CurFn->End = FunctionEndSym;
>> +  }
>>    CurFn = 0;
>>  }
>>
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h?rev=204790&r1=204789&r2=204790&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h Wed Mar 26
>> 04:50:36 2014
>> @@ -32,13 +32,13 @@ namespace llvm {
>>  class WinCodeViewLineTables : public AsmPrinterHandler {
>>    AsmPrinter *Asm;
>>    DebugLoc PrevInstLoc;
>> -  LexicalScopes LScopes;
>>
>>    // For each function, store a vector of labels to its instructions, as
>> well as
>>    // to the end of the function.
>>    struct FunctionInfo {
>>      SmallVector<MCSymbol *, 10> Instrs;
>>      MCSymbol *End;
>> +    FunctionInfo() : End(0) {}
>>    } *CurFn;
>>
>>    typedef DenseMap<const Function *, FunctionInfo> FnDebugInfoTy;
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140326/3d9ed333/attachment.html>


More information about the llvm-commits mailing list