• David Chase's avatar
    cmd/compile: decouple emitted block order from regalloc block order · c18ff184
    David Chase authored
    While tinkering with different block orders for the preemptible
    loop experiment, crashed the register allocator with a "bad"
    one (these exist).  Realized that one knob was controlling
    two things (register allocation and branch patterns) and
    decided that life would be simpler if the two orders were
    independent.
    
    Ran some experiments and determined that we have probably,
    mostly, been optimizing for register allocation effects, not
    branch effects.  Bad block orders for register allocation are
    somewhat costly.
    
    This will also allow separate experimentation with perhaps-
    better block orders for register allocation.
    
    Change-Id: I6ecf2f24cca178b6f8acc0d3c4caaef043c11ed9
    Reviewed-on: https://go-review.googlesource.com/47314
    Run-TryBot: David Chase <drchase@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
    c18ff184
regalloc.go 71.3 KB