diff options
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 13 | 
1 files changed, 12 insertions, 1 deletions
| diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 5093dd9a9c1..852c7ea6401 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -238,7 +238,18 @@ public:          LIndex = DSI;        }      } -    setLastInsn(LastInsn); + +    unsigned CurrentLastInsnIndex = 0; +    if (const MachineInstr *CL = getLastInsn())  +      CurrentLastInsnIndex = MIIndexMap[CL]; +    unsigned FIndex = MIIndexMap[getFirstInsn()]; + +    // Set LastInsn as the last instruction for this scope only if +    // it follows  +    //  1) this scope's first instruction and +    //  2) current last instruction for this scope, if any. +    if (LIndex >= CurrentLastInsnIndex && LIndex >= FIndex) +      setLastInsn(LastInsn);    }  #ifndef NDEBUG | 

