probinson added a comment. @rnk is correct that the phi's source location is propagating to the xorl. I modified the .ll file to put a different line number on the phi, and the xorl picked it up. This is clearly on the front-end to get right.
If we want to get down to cases, there are other poor choices of source location in this tiny example. The statement source is return a && b; The 'a' is at column 10, the '&&' at 12, the 'b' at 15. Now consider the load/test of 'a': %0 = load i32, i32* %a.addr, align 4, !dbg !19 %tobool = icmp ne i32 %0, 0, !dbg !19 br i1 %tobool, label %land.rhs, label %land.end, !dbg !20 ... !19 = !DILocation(line: 3, column: 10, scope: !12) !20 = !DILocation(line: 3, column: 12, scope: !12) The load and icmp both use !19, the source location of 'a' in the expression; the br uses !20, the '&&'. All seems good. Now consider the 'b' part: %1 = load i32, i32* %b.addr, align 4, !dbg !21 %tobool1 = icmp ne i32 %1, 0, !dbg !20 br label %land.end ... !20 = !DILocation(line: 3, column: 12, scope: !12) !21 = !DILocation(line: 3, column: 15, scope: !12) The load uses !21, 'b', but the icmp points to the '&&', and the br points nowhere. This is at least inconsistent with how the LHS of the expression is handled, and I would argue it's actually wrong. This gets reflected in the generated code: .loc 1 0 0 prologue_end # gdb-fail.c:0:0 xorl %eax, %eax ;;;; because of the phi's line-0 # kill: def $al killed $al killed $eax .loc 1 3 10 # gdb-fail.c:3:10 cmpl $0, -4(%rbp) ;;;; load/compare of 'a' at column 10 movb %al, -9(%rbp) # 1-byte Spill .loc 1 3 12 is_stmt 0 # gdb-fail.c:3:12 je .LBB1_2 ;;;; the je attributed to the && # %bb.1: # %land.rhs cmpl $0, -8(%rbp) ;;;; load/compare of 'b' at column 12 (??) not 15 setne %al movb %al, -9(%rbp) # 1-byte Spill .LBB1_2: # %land.end .loc 1 0 12 # gdb-fail.c:0:12 movb -9(%rbp), %al # 1-byte Reload I'd also be happier if the reload was attributed to the same source location as the following instructions, but that's probably a whole 'nother can of worms. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D91734/new/ https://reviews.llvm.org/D91734 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits