<div dir="ltr">Does this happen only when you are using lld? Please try gold to see if it works as you expected.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 18, 2017 at 10:45 AM, Carlo Kok via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">When compiling code with lld -O0 --lto-O0 --eh-frame-hdr I get strange interleaved line info all<br>
over the place:<br>
...<br>
0x00000000000595ac 22 11 1 0 0 is_stmt<br>
0x00000000000595bc 25 7 1 0 0 is_stmt <<<<br>
0x00000000000595c0 22 11 1 0 0 is_stmt<br>
0x00000000000595c4 25 7 1 0 0 is_stmt <<<<br>
0x00000000000595c8 26 7 1 0 0 is_stmt<br>
<br>
but the code only has 1 reference to line 25 and the references to line 22 all precede that:<br>
<br>
; Function Attrs: uwtable<br>
define hidden void @ms_t1d_ConsoleApplication479.<wbr>Program4_Testni32(i32) #0 !dbg !34 {<br>
  %2 = alloca i32<br>
  store i32 %0, i32* %2<br>
  call void @llvm.dbg.declare(metadata i32* %2, metadata !61, metadata !19), !dbg !63<br>
  %3 = alloca double, !dbg !63<br>
  store double 0.000000e+00, double* %3, !dbg !63<br>
  %4 = alloca %WriteLineObject*, !dbg !63<br>
  store %WriteLineObject* null, %WriteLineObject** %4, !dbg !63<br>
  br label %5, !dbg !63<br>
<br>
; <label>:5:                                      ; preds = %1<br>
  call void @llvm.dbg.declare(metadata double* %3, metadata !64, metadata !19), !dbg !68<br>
  call void @llvm.dbg.declare(metadata %WriteLineObject** %4, metadata !69, metadata !19), !dbg !68<br>
  store double 3.140000e+00, double* %3, !dbg !71<br>
  %6 = call i8* @__newinst(i8* bitcast ({ { i64, [30 x i8]*, i8*, [141 x i8]*, { i8*, void (%._ConsoleApplication479.<wbr>Program*)*, void (i32)*, i8*, %WriteLineString* (%._ConsoleApplication479.<wbr>Program*)*, i32 ()*, i8** }* }*, i8*, i8*, i8*, [16 x i8], i8*, i8*, i8*, i8* }* @_rtti_t1d_<wbr>ConsoleApplication479.Program to i8*), i32 16), !dbg !72<br>
  %7 = bitcast i8* %6 to %._ConsoleApplication479.<wbr>Program*, !dbg !72<br>
  call void @mi_t1d_ConsoleApplication479.<wbr>Program5_.ctor(%._<wbr>ConsoleApplication479.Program* %7) #0, !dbg !72<br>
  %8 = bitcast %._ConsoleApplication479.<wbr>Program* %7 to %WriteLineObject*, !dbg !72<br>
  store %WriteLineObject* %8, %WriteLineObject** %4, !dbg !72<br>
  call void @WriteLine(%WriteLineString* bitcast ({ i8*, i32, [14 x i8] }* @.str2 to %WriteLineString*)) #1, !dbg !73<br>
  %9 = load double, double* %3, !dbg !74<br>
  %10 = sitofp i32 1 to double, !dbg !74<br>
  %11 = fadd double %9, %10, !dbg !74<br>
  store double %11, double* %3, !dbg !74<br>
  %12 = load double, double* %3, !dbg !75<br>
  %13 = sitofp i32 1 to double, !dbg !75<br>
  %14 = fadd double %12, %13, !dbg !75<br>
  store double %14, double* %3, !dbg !75<br>
  ret void, !dbg !76<br>
}<br>
<br>
<br>
<br>
!72 = !DILocation(line: 22, column: 11, scope: !65)<br>
!73 = !DILocation(line: 25, column: 7, scope: !65)<br>
<br>
full bitcode: <a href="https://gist.github.com/carlokok/aa3fab175f8afe8e4776ad6c2f5cc80a" rel="noreferrer" target="_blank">https://gist.github.com/<wbr>carlokok/<wbr>aa3fab175f8afe8e4776ad6c2f5cc8<wbr>0a</a><br>
<br>
disasm: <a href="https://gist.github.com/carlokok/ab265461b37f87a10e0853ffc4d93c77" rel="noreferrer" target="_blank">https://gist.github.com/<wbr>carlokok/<wbr>ab265461b37f87a10e0853ffc4d93c<wbr>77</a><br>
<br>
What could possibly cause this? It's wreaking havoc with the debugger experience.<br>
<br>
Carlo Kok<br>
RemObjects Software<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div>