<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Sadly, after this commit TestDataFormatterLibcxxList.py started failing with:<div class=""><br class=""></div><div class="">```</div><div class=""><div class="">output: Process 67333 stopped</div><div class="">* thread #1, queue = 'com.apple.main-thread', stop reason = step over</div><div class=""> frame #0: 0x0000000100000eb0 a.out`main at main.cpp:33:16</div><div class=""> 30 <span class="Apple-tab-span" style="white-space:pre"> </span> (text_list.push_back(std::string("smart")));</div><div class=""> 31 <span class="Apple-tab-span" style="white-space:pre"> </span> </div><div class=""> 32 <span class="Apple-tab-span" style="white-space:pre"> </span> printf("// Set second break point at this line.");</div><div class="">-> 33 <span class="Apple-tab-span" style="white-space:pre"> </span> (text_list.push_back(std::string("!!!"))); </div><div class=""> <span class="Apple-tab-span" style="white-space:pre"> </span> ^</div><div class=""> 34 <span class="Apple-tab-span" style="white-space:pre"> </span> </div><div class=""> 35 <span class="Apple-tab-span" style="white-space:pre"> </span> std::list<int> countingList = {3141, 3142, 3142,3142,3142, 3142, 3142, 3141};</div><div class=""> 36 <span class="Apple-tab-span" style="white-space:pre"> </span> countingList.sort();</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">runCmd: frame variable text_list[0]</div><div class="">output: (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) [0] = "goofy"</div><div class=""><br class=""></div><div class="">Expecting sub string: goofy</div><div class="">Matched</div><div class=""><br class=""></div><div class="">runCmd: frame variable text_list[3]</div><div class="">output: None</div><div class=""><br class=""></div><div class="">Expecting sub string: !!!</div><div>```</div><div><br class=""></div><div>URL: <a href="http://lab.llvm.org:8080/green/view/LLDB/job/lldb-cmake/10854" class="">http://lab.llvm.org:8080/green/view/LLDB/job/lldb-cmake/10854</a></div><div><br class=""></div><div>I confirmed that reverting this fixes the issue.</div><div><br class=""></div><div>I think the problem is that we’re breaking on an instruction that looks like it’s on line 33, but it’s actually “before” the full effect of the push_back() is visible.</div><div><br class=""></div><div>In which case the test is wrong, because it’s setting the breakpoint too early…</div><div><br class=""></div><div>vedant</div><div><br class=""><blockquote type="cite" class=""><div class="">On Oct 5, 2018, at 11:29 AM, Matthias Braun via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Author: matze<br class="">Date: Fri Oct 5 11:29:24 2018<br class="">New Revision: 343874<br class=""><br class="">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=343874&view=rev" class="">http://llvm.org/viewvc/llvm-project?rev=343874&view=rev</a><br class="">Log:<br class="">DwarfDebug: Pick next location in case of missing location at block begin<br class=""><br class="">Context: Compiler generated instructions do not have a debug location<br class="">assigned to them. However emitting 0-line records for all of them bloats<br class="">the line tables for very little benefit so we usually avoid doing that.<br class=""><br class="">Not emitting anything will lead to the previous debug location getting<br class="">applied to the locationless instructions. This is not desirable for<br class="">block begin and after labels. Previously we would emit simply emit<br class="">line-0 records in this case, this patch changes the behavior to do a<br class="">forward search for a debug location in these cases before emitting a<br class="">line-0 record to further reduce line table bloat.<br class=""><br class="">Inspired by the discussion in <a href="https://reviews.llvm.org/D52862" class="">https://reviews.llvm.org/D52862</a><br class=""><br class="">Added:<br class=""> llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.mir<br class="">Modified:<br class=""> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br class=""> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h<br class=""> llvm/trunk/test/DebugInfo/AArch64/line-header.ll<br class=""> llvm/trunk/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll<br class=""> llvm/trunk/test/DebugInfo/Mips/delay-slot.ll<br class=""> llvm/trunk/test/DebugInfo/NVPTX/debug-info.ll<br class=""> llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.ll<br class=""><br class="">Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=343874&r1=343873&r2=343874&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=343874&r1=343873&r2=343874&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)<br class="">+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Fri Oct 5 11:29:24 2018<br class="">@@ -1313,6 +1313,49 @@ void DwarfDebug::collectEntityInfo(Dwarf<br class=""> }<br class=""> }<br class=""><br class="">+static const DebugLoc &<br class="">+findNextDebugLoc(MachineBasicBlock::const_iterator MBBI,<br class="">+ MachineBasicBlock::const_iterator MBBE) {<br class="">+ static DebugLoc NoLocation;<br class="">+ for ( ; MBBI != MBBE; ++MBBI) {<br class="">+ if (MBBI->isDebugInstr())<br class="">+ continue;<br class="">+ const DebugLoc &DL = MBBI->getDebugLoc();<br class="">+ if (DL)<br class="">+ return DL;<br class="">+ }<br class="">+ return NoLocation;<br class="">+}<br class="">+<br class="">+void DwarfDebug::emitDebugLoc(const DebugLoc &DL) {<br class="">+ unsigned LastAsmLine =<br class="">+ Asm->OutStreamer->getContext().getCurrentDwarfLoc().getLine();<br class="">+<br class="">+ // We have an explicit location, different from the previous location.<br class="">+ // Don't repeat a line-0 record, but otherwise emit the new location.<br class="">+ // (The new location might be an explicit line 0, which we do emit.)<br class="">+ unsigned Line = DL.getLine();<br class="">+ if (PrevInstLoc && Line == 0 && LastAsmLine == 0)<br class="">+ return;<br class="">+ unsigned Flags = 0;<br class="">+ if (DL == PrologEndLoc) {<br class="">+ Flags |= DWARF2_FLAG_PROLOGUE_END | DWARF2_FLAG_IS_STMT;<br class="">+ PrologEndLoc = DebugLoc();<br class="">+ }<br class="">+ // If the line changed, we call that a new statement; unless we went to<br class="">+ // line 0 and came back, in which case it is not a new statement.<br class="">+ unsigned OldLine = PrevInstLoc ? PrevInstLoc.getLine() : LastAsmLine;<br class="">+ if (Line && Line != OldLine)<br class="">+ Flags |= DWARF2_FLAG_IS_STMT;<br class="">+<br class="">+ const MDNode *Scope = DL.getScope();<br class="">+ recordSourceLine(Line, DL.getCol(), Scope, Flags);<br class="">+<br class="">+ // If we're not at line 0, remember this location.<br class="">+ if (Line)<br class="">+ PrevInstLoc = DL;<br class="">+}<br class="">+<br class=""> // Process beginning of an instruction.<br class=""> void DwarfDebug::beginInstruction(const MachineInstr *MI) {<br class=""> DebugHandlerBase::beginInstruction(MI);<br class="">@@ -1352,54 +1395,41 @@ void DwarfDebug::beginInstruction(const<br class=""> // If we have already emitted a line-0 record, don't repeat it.<br class=""> if (LastAsmLine == 0)<br class=""> return;<br class="">+ // By default we emit nothing to avoid line table bloat. However at the<br class="">+ // beginning of a basic block or after a label it is undesirable to let<br class="">+ // the previous location unchanged. In these cases do a forward search for<br class="">+ // the next valid debug location.<br class="">+ if (UnknownLocations == Default) {<br class="">+ const MachineBasicBlock &MBB = *MI->getParent();<br class="">+ if (!PrevLabel && PrevInstBB == &MBB)<br class="">+ return;<br class="">+<br class="">+ const DebugLoc &NextDL = findNextDebugLoc(MI->getIterator(), MBB.end());<br class="">+ if (NextDL) {<br class="">+ emitDebugLoc(NextDL);<br class="">+ return;<br class="">+ }<br class="">+ }<br class="">+<br class="">+ // We should emit a line-0 record.<br class=""> // If user said Don't Do That, don't do that.<br class=""> if (UnknownLocations == Disable)<br class=""> return;<br class="">- // See if we have a reason to emit a line-0 record now.<br class="">- // Reasons to emit a line-0 record include:<br class="">- // - User asked for it (UnknownLocations).<br class="">- // - Instruction has a label, so it's referenced from somewhere else,<br class="">- // possibly debug information; we want it to have a source location.<br class="">- // - Instruction is at the top of a block; we don't want to inherit the<br class="">- // location from the physically previous (maybe unrelated) block.<br class="">- if (UnknownLocations == Enable || PrevLabel ||<br class="">- (PrevInstBB && PrevInstBB != MI->getParent())) {<br class="">- // Preserve the file and column numbers, if we can, to save space in<br class="">- // the encoded line table.<br class="">- // Do not update PrevInstLoc, it remembers the last non-0 line.<br class="">- const MDNode *Scope = nullptr;<br class="">- unsigned Column = 0;<br class="">- if (PrevInstLoc) {<br class="">- Scope = PrevInstLoc.getScope();<br class="">- Column = PrevInstLoc.getCol();<br class="">- }<br class="">- recordSourceLine(/*Line=*/0, Column, Scope, /*Flags=*/0);<br class="">+ // Emit a line-0 record now.<br class="">+ // Preserve the file and column numbers, if we can, to save space in<br class="">+ // the encoded line table.<br class="">+ // Do not update PrevInstLoc, it remembers the last non-0 line.<br class="">+ const MDNode *Scope = nullptr;<br class="">+ unsigned Column = 0;<br class="">+ if (PrevInstLoc) {<br class="">+ Scope = PrevInstLoc.getScope();<br class="">+ Column = PrevInstLoc.getCol();<br class=""> }<br class="">+ recordSourceLine(/*Line=*/0, Column, Scope, /*Flags=*/0);<br class=""> return;<br class=""> }<br class=""><br class="">- // We have an explicit location, different from the previous location.<br class="">- // Don't repeat a line-0 record, but otherwise emit the new location.<br class="">- // (The new location might be an explicit line 0, which we do emit.)<br class="">- if (PrevInstLoc && DL.getLine() == 0 && LastAsmLine == 0)<br class="">- return;<br class="">- unsigned Flags = 0;<br class="">- if (DL == PrologEndLoc) {<br class="">- Flags |= DWARF2_FLAG_PROLOGUE_END | DWARF2_FLAG_IS_STMT;<br class="">- PrologEndLoc = DebugLoc();<br class="">- }<br class="">- // If the line changed, we call that a new statement; unless we went to<br class="">- // line 0 and came back, in which case it is not a new statement.<br class="">- unsigned OldLine = PrevInstLoc ? PrevInstLoc.getLine() : LastAsmLine;<br class="">- if (DL.getLine() && DL.getLine() != OldLine)<br class="">- Flags |= DWARF2_FLAG_IS_STMT;<br class="">-<br class="">- const MDNode *Scope = DL.getScope();<br class="">- recordSourceLine(DL.getLine(), DL.getCol(), Scope, Flags);<br class="">-<br class="">- // If we're not at line 0, remember this location.<br class="">- if (DL.getLine())<br class="">- PrevInstLoc = DL;<br class="">+ emitDebugLoc(DL);<br class=""> }<br class=""><br class=""> static DebugLoc findPrologueEndLoc(const MachineFunction *MF) {<br class=""><br class="">Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=343874&r1=343873&r2=343874&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=343874&r1=343873&r2=343874&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)<br class="">+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Fri Oct 5 11:29:24 2018<br class="">@@ -719,6 +719,9 @@ public:<br class=""> bool tuneForLLDB() const { return DebuggerTuning == DebuggerKind::LLDB; }<br class=""> bool tuneForSCE() const { return DebuggerTuning == DebuggerKind::SCE; }<br class=""> /// @}<br class="">+<br class="">+private:<br class="">+ void emitDebugLoc(const DebugLoc &DL);<br class=""> };<br class=""><br class=""> } // end namespace llvm<br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/AArch64/line-header.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/AArch64/line-header.ll?rev=343874&r1=343873&r2=343874&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/AArch64/line-header.ll?rev=343874&r1=343873&r2=343874&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/AArch64/line-header.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/AArch64/line-header.ll Fri Oct 5 11:29:24 2018<br class="">@@ -3,4 +3,4 @@<br class=""><br class=""> ; check line table length is correctly calculated for both big and little endian<br class=""> CHECK-LABEL: .debug_line contents:<br class="">-CHECK: total_length: 0x0000003f<br class="">+CHECK: total_length: 0x0000003c<br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll?rev=343874&r1=343873&r2=343874&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll?rev=343874&r1=343873&r2=343874&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll Fri Oct 5 11:29:24 2018<br class="">@@ -31,11 +31,10 @@ if.then:<br class=""><br class=""> if.end: ; preds = %entry<br class=""> ; Materialize the constant.<br class="">-; CHECK: .loc 1 0<br class="">+; CHECK: .loc 1 7 5<br class=""> ; CHECK-NEXT: mvn r0, #0<br class=""><br class=""> ; The backend performs the store to %retval first, for some reason.<br class="">-; CHECK-NEXT: .loc 1 7 5<br class=""> ; CHECK-NEXT: str r0, [sp, #4]<br class=""> store i32 -1, i32* %x, align 4, !dbg !19<br class=""><br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/Mips/delay-slot.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/delay-slot.ll?rev=343874&r1=343873&r2=343874&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/delay-slot.ll?rev=343874&r1=343873&r2=343874&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/Mips/delay-slot.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/Mips/delay-slot.ll Fri Oct 5 11:29:24 2018<br class="">@@ -16,7 +16,7 @@<br class=""> ; CHECK: 0x0000000000000004 2 0 1 0 0 is_stmt prologue_end<br class=""> ; CHECK: 0x0000000000000024 3 0 1 0 0 is_stmt<br class=""> ; CHECK: 0x0000000000000034 4 0 1 0 0 is_stmt<br class="">-; CHECK: 0x0000000000000048 5 0 1 0 0 is_stmt<br class="">+; CHECK: 0x0000000000000044 5 0 1 0 0 is_stmt<br class=""> ; CHECK: 0x0000000000000058 5 0 1 0 0 is_stmt end_sequence<br class=""><br class=""><br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/NVPTX/debug-info.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/NVPTX/debug-info.ll?rev=343874&r1=343873&r2=343874&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/NVPTX/debug-info.ll?rev=343874&r1=343873&r2=343874&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/NVPTX/debug-info.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/NVPTX/debug-info.ll Fri Oct 5 11:29:24 2018<br class="">@@ -36,6 +36,7 @@<br class=""> ; CHECK: setp.ge.s32 %p{{.+}}, %r{{.+}}, %r{{.+}};<br class=""> ; CHECK: .loc [[DEBUG_INFO_CU]] 7 7<br class=""> ; CHECK: @%p{{.+}} bra [[BB:.+]];<br class="">+; CHECK: .loc [[DEBUG_INFO_CU]] 8 13<br class=""> ; CHECK: ld.param.f32 %f{{.+}}, [{{.+}}];<br class=""> ; CHECK: ld.param.u64 %rd{{.+}}, [{{.+}}];<br class=""> ; CHECK: cvta.to.global.u64 %rd{{.+}}, %rd{{.+}};<br class="">@@ -43,7 +44,6 @@<br class=""> ; CHECK: cvta.to.global.u64 %rd{{.+}}, %rd{{.+}};<br class=""> ; CHECK: mul.wide.u32 %rd{{.+}}, %r{{.+}}, 4;<br class=""> ; CHECK: add.s64 %rd{{.+}}, %rd{{.+}}, %rd{{.+}};<br class="">-; CHECK: .loc [[DEBUG_INFO_CU]] 8 13<br class=""> ; CHECK: ld.global.f32 %f{{.+}}, [%rd{{.+}}];<br class=""> ; CHECK: add.s64 %rd{{.+}}, %rd{{.+}}, %rd{{.+}};<br class=""> ; CHECK: .loc [[DEBUG_INFO_CU]] 8 19<br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.ll?rev=343874&r1=343873&r2=343874&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.ll?rev=343874&r1=343873&r2=343874&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.ll Fri Oct 5 11:29:24 2018<br class="">@@ -40,15 +40,14 @@ if.end:<br class=""> ret void, !dbg !14<br class=""> }<br class=""><br class="">-; CHECK: .loc 1 7 7<br class="">+; CHECK: .loc 1 7 7 prologue_end<br class=""> ; CHECK-NOT: .loc<br class="">-; CHECK: .loc 1 0 7 is_stmt 0<br class="">+; CHECK: # %bb.1<br class="">+; CHECK-NEXT: .file 2 "/tests/include.h"<br class="">+; CHECK-NEXT: .loc 2 20 5<br class=""> ; CHECK-NOT: .loc<br class="">-; CHECK: .loc 2 20 5 is_stmt 1<br class=""> ; CHECK: .LBB0_2:<br class="">-; CHECK-NEXT: .loc 2 0 5 is_stmt 0<br class="">-; CHECK-NOT: .loc<br class="">-; CHECK: .loc 1 10 3 is_stmt 1<br class="">+; CHECK: .loc 1 10 3<br class=""> ;<br class=""> ; DISABLE-NOT: .loc 1 0<br class=""><br class=""><br class="">Added: llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.mir<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.mir?rev=343874&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.mir?rev=343874&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.mir (added)<br class="">+++ llvm/trunk/test/DebugInfo/X86/dwarf-no-source-loc.mir Fri Oct 5 11:29:24 2018<br class="">@@ -0,0 +1,74 @@<br class="">+# RUN: llc -o - %s -start-before=patchable-function -use-unknown-locations=Default | FileCheck %s --check-prefixes=CHECK,DEFAULT<br class="">+# RUN: llc -o - %s -start-before=patchable-function -use-unknown-locations=Enable | FileCheck %s --check-prefixes=CHECK,ENABLE<br class="">+# RUN: llc -o - %s -start-before=patchable-function -use-unknown-locations=Disable | FileCheck %s --check-prefixes=CHECK,DISABLE<br class="">+--- |<br class="">+ target triple = "x86_64--"<br class="">+ <br class="">+ !0 = !DIFile(filename: "dwarf-no-source-loc.mir", directory: "/")<br class="">+ !1 = distinct !DICompileUnit(file: !0, language: DW_LANG_C, emissionKind: LineTablesOnly)<br class="">+ !2 = distinct !DISubprogram(name: "func", unit: !1)<br class="">+ !3 = !DILocation(line: 17, scope: !2)<br class="">+ !4 = !DILocation(line: 42, scope: !2)<br class="">+<br class="">+ !llvm.dbg.cu = !{!1}<br class="">+ !llvm.module.flags = !{!10, !11}<br class="">+ !10 = !{i32 2, !"Dwarf Version", i32 4}<br class="">+ !11 = !{i32 2, !"Debug Info Version", i32 3}<br class="">+ <br class="">+ define void @func() !dbg !2 {<br class="">+ unreachable<br class="">+ }<br class="">+...<br class="">+---<br class="">+name: func<br class="">+body: |<br class="">+ bb.0:<br class="">+ NOOP<br class="">+ NOOP<br class="">+ $eax = MOV32ri 1, debug-location !3<br class="">+ ; CHECK-LABEL: bb.0<br class="">+ ; CHECK: nop<br class="">+ ; CHECK: nop<br class="">+ ; CHECK: .loc 1 17 0 prologue_end<br class="">+ ; CHECK: movl $1, %eax<br class="">+<br class="">+ bb.1:<br class="">+ NOOP<br class="">+ $ebx = MOV32ri 2, debug-location !4<br class="">+ ; CHECK-LABEL: bb.1<br class="">+ ; DEFAULT: .loc 1 42 0<br class="">+ ; ENABLE: .loc 1 0<br class="">+ ; DISABLE-NOT: .loc 1 0<br class="">+ ; CHECK: nop<br class="">+ ; ENABLE: .loc 1 42 0<br class="">+ ; CHECK: movl $2, %ebx<br class="">+<br class="">+ bb.2:<br class="">+ NOOP<br class="">+ ; CHECK-LABEL: bb.2<br class="">+ ; DEFAULT: .loc 1 0 0 is_stmt 0<br class="">+ ; ENABLE: .loc 1 0 0 is_stmt 0<br class="">+ ; DISABLE-NOT: .loc 1 0<br class="">+ ; CHECK: nop<br class="">+<br class="">+ bb.3:<br class="">+ NOOP<br class="">+ $ecx = MOV32ri 3, debug-location !3<br class="">+ ; CHECK-LABEL: bb.3<br class="">+ ; CHECK: nop<br class="">+ ; DEFAULT: .loc 1 17 0 is_stmt 1<br class="">+ ; ENABLE: .loc 1 17 0 is_stmt 1<br class="">+ ; DISABLE-NOT: .loc 1 0<br class="">+ ; CHECK: movl $3, %ecx<br class="">+<br class="">+ bb.4:<br class="">+ NOOP<br class="">+ $edx = MOV32ri 4, debug-location !4<br class="">+ ; CHECK: bb.4<br class="">+ ; DEFAULT: .loc 1 42 0<br class="">+ ; ENABLE: .loc 1 0 0 is_stmt 0<br class="">+ ; DISABLE-NOT: .loc 1 0<br class="">+ ; CHECK: nop<br class="">+ ; ENABLE: .loc 1 42 0 is_stmt 1<br class="">+ ; CHECK: movl $4, %edx<br class="">+...<br class=""><br class=""><br class="">_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits<br class=""></div></div></blockquote></div><br class=""></div></body></html>