[llvm-commits] [llvm] r82077 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

Devang Patel devang.patel at gmail.com
Mon Sep 28 10:44:44 PDT 2009


Chris,


On Sun, Sep 27, 2009 at 3:40 PM, Chris Lattner <clattner at apple.com> wrote:
> On Sep 16, 2009, at 1:39 PM, Devang Patel wrote:
> Author: dpatel
>> Date: Wed Sep 16 15:39:11 2009
>> New Revision: 82077
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=82077&view=rev
>> Log:
>> At iSel time, update DebugLoc based on debug info attached with an
>> instruction.
>
> Ok,
>
>>   // Lower all of the non-terminator instructions. If a call is
>> emitted
>>   // as a tail call, cease emitting nodes for this block.
>> -  for (BasicBlock::iterator I = Begin; I != End && !SDL-
>> >HasTailCall; ++I)
>> +  for (BasicBlock::iterator I = Begin; I != End && !SDL-
>> >HasTailCall; ++I) {
>> +    if (MDDbgKind) {
>> +      // Update DebugLoc if debug information is attached with this
>> +      // instruction.
>> +      if (MDNode *Dbg =
>> +       dyn_cast_or_null<MDNode>(TheMetadata.getMD(MDDbgKind, I))) {
>
> This cast should not be needed, getMD returns an MDNode*.

ok

>
>> +  Metadata &TheMetadata = Fn.getContext().getMetadata();
>> +  MDKindID MDDbgKind = TheMetadata.getMDKind("dbg");
>> +
>>   // Iterate over all basic blocks in the function.
>>   for (Function::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) {
>>     BasicBlock *LLVMBB = &*I;
>> @@ -722,6 +739,18 @@
>>       FastIS->startNewBlock(BB);
>>       // Do FastISel on as many instructions as possible.
>>       for (; BI != End; ++BI) {
>> +     if (MDDbgKind) {
>> +       // Update DebugLoc if debug information is attached with this
>> +       // instruction.
>> +       if (MDNode *Dbg =
>> +           dyn_cast_or_null<MDNode>(TheMetadata.getMD(MDDbgKind, BI))) {
>
> Likewise, also, why is this code duplicated in two places?

Once for FastISel  and once for SelectBasicBlock() when FastISel is not used.
-
Devang




More information about the llvm-commits mailing list