[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