• David Chase's avatar
    cmd/compile: reduce debugger-worsening line number churn · 00263a89
    David Chase authored
    Reuse block head or preceding instruction's line number for
    register allocator's spill, fill, copy, rematerialization
    instructionsl; and also for phi, and for no-src-pos
    instructions.  Assembler creates same line number tables
    for copy-predecessor-line and for no-src-pos,
    but copy-predecessor produces better-looking assembly
    language output with -S and with GOSSAFUNC, and does not
    require changes to tests of existing assembly language.
    
    Split "copyInto" into two cases, one for register allocation,
    one for otherwise.  This caused the test score line change
    count to increase by one, which may reflect legitimately
    useful information preserved.  Without any special treatment
    for copyInto, the change count increases by 21 more, from
    51 to 72 (i.e., quite a lot).
    
    There is a test; using two naive "scores" for line number
    churn, the old numbering is 2x or 4x worse.
    
    Fixes #18902.
    
    Change-Id: I0a0a69659d30ee4e5d10116a0dd2b8c5df8457b1
    Reviewed-on: https://go-review.googlesource.com/36207
    Run-TryBot: David Chase <drchase@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    00263a89
regalloc.go 71.2 KB