]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: decouple emitted block order from regalloc block order
authorDavid Chase <drchase@google.com>
Fri, 30 Jun 2017 20:20:10 +0000 (16:20 -0400)
committerDavid Chase <drchase@google.com>
Thu, 22 Feb 2018 03:02:34 +0000 (03:02 +0000)
commitc18ff1846592194a6a894f26f782e25b816ae73e
tree9dbaecf8cbfa1d65064d6414a4032c9227504442
parenta66af7280de998712d84eca40783019305b58bf3
cmd/compile: decouple emitted block order from regalloc block order

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: Cherry Zhang <cherryyz@google.com>
src/cmd/compile/internal/ssa/layout.go
src/cmd/compile/internal/ssa/regalloc.go