[llvm-commits] [llvm] r68813 - in /llvm/trunk: include/llvm/CodeGen/MachineModuleInfo.h lib/CodeGen/MachineModuleInfo.cpp

Devang Patel dpatel at apple.com
Mon Apr 13 09:25:56 PDT 2009


On Apr 13, 2009, at 9:12 AM, Evan Cheng wrote:

> Hi Devang,
>
> Is this a temporary measure?

Yes. Eventually dwarfwriter won't rely on labels created by FastISel  
and SelectionDAGBuild.

> We want to eliminate machinemoduleinfo.

-
Devang

>
>
> Evan
>
> Sent from my iPhone
>
> On Apr 10, 2009, at 11:59 AM, Devang Patel <dpatel at apple.com> wrote:
>
>> Author: dpatel
>> Date: Fri Apr 10 13:58:59 2009
>> New Revision: 68813
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=68813&view=rev
>> Log:
>> DebugLabelFolder ruthlessly deletes redundant labels. However,
>> sometimes the redundant labels is referenced by debug info somewhere
>> else. This patch provies a way so that dwarf writer can mark labels
>> as used.
>>
>> Modified:
>>   llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h
>>   llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h?rev=68813&r1=68812&r2=68813&view=diff
>>
>> ===
>> ===
>> ===
>> =====================================================================
>> --- llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h Fri Apr 10
>> 13:58:59 2009
>> @@ -37,6 +37,7 @@
>> #include "llvm/ADT/DenseMap.h"
>> #include "llvm/ADT/UniqueVector.h"
>> #include "llvm/ADT/SmallPtrSet.h"
>> +#include "llvm/ADT/SmallSet.h"
>> #include "llvm/ADT/StringMap.h"
>> #include "llvm/CodeGen/MachineLocation.h"
>> #include "llvm/GlobalValue.h"
>> @@ -115,6 +116,9 @@
>>  // searchable format.
>>  SmallPtrSet<const Function *, 32> UsedFunctions;
>>
>> +  /// UsedDbgLabels - labels are used by debug info entries.
>> +  SmallSet<unsigned, 8> UsedDbgLabels;
>> +
>>  bool CallsEHReturn;
>>  bool CallsUnwindInit;
>>
>> @@ -195,6 +199,19 @@
>>    return LabelID ? LabelIDList[LabelID - 1] : 0;
>>  }
>>
>> +  /// isDbgLabelUsed - Return true if label with LabelID is used by
>> +  /// DwarfWriter.
>> +  bool isDbgLabelUsed(unsigned LabelID) {
>> +    return UsedDbgLabels.count(LabelID);
>> +  }
>> +
>> +  /// RecordUsedDbgLabel - Mark label with LabelID as used. This is
>> used
>> +  /// by DwarfWriter to inform DebugLabelFolder that certain labels
>> are
>> +  /// not to be deleted.
>> +  void RecordUsedDbgLabel(unsigned LabelID) {
>> +    UsedDbgLabels.insert(LabelID);
>> +  }
>> +
>>  /// getFrameMoves - Returns a reference to a list of moves done in
>> the current
>>  /// function's prologue.  Used to construct frame maps for debug
>> and exception
>>  /// handling comsumers.
>>
>> Modified: llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp?rev=68813&r1=68812&r2=68813&view=diff
>>
>> ===
>> ===
>> ===
>> =====================================================================
>> --- llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp Fri Apr 10 13:58:59
>> 2009
>> @@ -333,7 +333,7 @@
>>    // Iterate through instructions.
>>    for (MachineBasicBlock::iterator I = BB->begin(), E = BB->end();
>> I != E; ) {
>>      // Is it a label.
>> -      if (I->isDebugLabel()) {
>> +      if (I->isDebugLabel() && !MMI->isDbgLabelUsed(I->getOperand
>> (0).getImm())){
>>        // The label ID # is always operand #0, an immediate.
>>        unsigned NextLabel = I->getOperand(0).getImm();
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> 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