rnk added a comment.

I see. We should give that constant materialization a location. It looks like 
it is coming from a phi node. The IR looks like this:

    %6 = icmp ne i32 %5, 0, !dbg !11
    br i1 %6, label %7, label %10, !dbg !12
  
  7:                                                ; preds = %2
    %8 = load i32, i32* %4, align 4, !dbg !13
    %9 = icmp ne i32 %8, 0, !dbg !13
    br label %10
  
  10:                                               ; preds = %7, %2
    %11 = phi i1 [ false, %2 ], [ %9, %7 ], !dbg !14   ;;;; Probably where the 
zero comes from
    %12 = zext i1 %11 to i32, !dbg !11
    ret i32 %12, !dbg !15

The PHI node has location !14, which is a line 0 location. Is there a reason we 
give this PHI a line 0 location, when it's built by the frontend for the 
conditional operator? IMO we should use the location of the `br` instruction, 
which will be the location of the conditional operator (`&&` at the source 
level).

Paul has already shown that flushing the local value map improves debug info 
quality in general. If we can't fix all the gdb test suite failures, IMO we 
should consider XFAILing them and moving on.


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

Reply via email to