[llvm-dev] Interleaved debug info on arm

Rui Ueyama via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 18 18:01:56 PDT 2017


Does this happen only when you are using lld? Please try gold to see if it
works as you expected.

On Mon, Sep 18, 2017 at 10:45 AM, Carlo Kok via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> When compiling code with lld -O0 --lto-O0 --eh-frame-hdr I get strange
> interleaved line info all
> over the place:
> ...
> 0x00000000000595ac 22 11 1 0 0 is_stmt
> 0x00000000000595bc 25 7 1 0 0 is_stmt <<<
> 0x00000000000595c0 22 11 1 0 0 is_stmt
> 0x00000000000595c4 25 7 1 0 0 is_stmt <<<
> 0x00000000000595c8 26 7 1 0 0 is_stmt
>
> but the code only has 1 reference to line 25 and the references to line 22
> all precede that:
>
> ; Function Attrs: uwtable
> define hidden void @ms_t1d_ConsoleApplication479.Program4_Testni32(i32)
> #0 !dbg !34 {
>   %2 = alloca i32
>   store i32 %0, i32* %2
>   call void @llvm.dbg.declare(metadata i32* %2, metadata !61, metadata
> !19), !dbg !63
>   %3 = alloca double, !dbg !63
>   store double 0.000000e+00, double* %3, !dbg !63
>   %4 = alloca %WriteLineObject*, !dbg !63
>   store %WriteLineObject* null, %WriteLineObject** %4, !dbg !63
>   br label %5, !dbg !63
>
> ; <label>:5:                                      ; preds = %1
>   call void @llvm.dbg.declare(metadata double* %3, metadata !64, metadata
> !19), !dbg !68
>   call void @llvm.dbg.declare(metadata %WriteLineObject** %4, metadata
> !69, metadata !19), !dbg !68
>   store double 3.140000e+00, double* %3, !dbg !71
>   %6 = call i8* @__newinst(i8* bitcast ({ { i64, [30 x i8]*, i8*, [141 x
> i8]*, { i8*, void (%._ConsoleApplication479.Program*)*, void (i32)*, i8*,
> %WriteLineString* (%._ConsoleApplication479.Program*)*, i32 ()*, i8** }*
> }*, i8*, i8*, i8*, [16 x i8], i8*, i8*, i8*, i8* }* @_rtti_t1d_ConsoleApplication479.Program
> to i8*), i32 16), !dbg !72
>   %7 = bitcast i8* %6 to %._ConsoleApplication479.Program*, !dbg !72
>   call void @mi_t1d_ConsoleApplication479.Program5_.ctor(%._ConsoleApplication479.Program*
> %7) #0, !dbg !72
>   %8 = bitcast %._ConsoleApplication479.Program* %7 to %WriteLineObject*,
> !dbg !72
>   store %WriteLineObject* %8, %WriteLineObject** %4, !dbg !72
>   call void @WriteLine(%WriteLineString* bitcast ({ i8*, i32, [14 x i8] }*
> @.str2 to %WriteLineString*)) #1, !dbg !73
>   %9 = load double, double* %3, !dbg !74
>   %10 = sitofp i32 1 to double, !dbg !74
>   %11 = fadd double %9, %10, !dbg !74
>   store double %11, double* %3, !dbg !74
>   %12 = load double, double* %3, !dbg !75
>   %13 = sitofp i32 1 to double, !dbg !75
>   %14 = fadd double %12, %13, !dbg !75
>   store double %14, double* %3, !dbg !75
>   ret void, !dbg !76
> }
>
>
>
> !72 = !DILocation(line: 22, column: 11, scope: !65)
> !73 = !DILocation(line: 25, column: 7, scope: !65)
>
> full bitcode: https://gist.github.com/carlokok/
> aa3fab175f8afe8e4776ad6c2f5cc80a
>
> disasm: https://gist.github.com/carlokok/ab265461b37f87a10e0853ffc4d93c77
>
> What could possibly cause this? It's wreaking havoc with the debugger
> experience.
>
> Carlo Kok
> RemObjects Software
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170918/a0fcd85b/attachment.html>


More information about the llvm-dev mailing list