1
0
mirror of https://github.com/golang/go synced 2024-10-05 18:31:28 -06:00
go/src/cmd
Keith Randall a678a5c7a5 [dev.ssa] cmd/compile/internal/ssa: Fix scheduler
The DFS scheduler doesn't do the right thing.  If a Value x is used by
more than one other Value, then x is put into the DFS queue when
its first user (call it y) is visited.  It is not removed and reinserted
when the second user of x (call it z) is visited, so the dependency
between x and z is not respected.  There is no easy way to fix this with
the DFS queue because we'd have to rip values out of the middle of the
DFS queue.

The new scheduler works from the end of the block backwards, scheduling
instructions which have had all of their uses already scheduled.
A simple priority scheme breaks ties between multiple instructions that
are ready to schedule simultaneously.

Keep track of whether we've scheduled or not, and make print() use
the scheduled order if we have.

Fix some shift tests that this change tickles.  Add unsigned right shift tests.

Change-Id: I44164c10bb92ae8ab8f76d7a5180cbafab826ea1
Reviewed-on: https://go-review.googlesource.com/13069
Reviewed-by: Todd Neal <todd@tneal.org>
2015-08-04 00:31:56 +00:00
..
addr2line
api api: add go1.5.txt API file, reset next.txt 2015-07-21 02:48:35 +00:00
asm cmd/asm: fix and test CALL, JMP aliases on arm, arm64, ppc64 2015-07-28 14:19:53 +00:00
cgo cmd/cgo: discard trailing zero-sized fields in a non-empty C struct 2015-07-30 15:55:25 +00:00
compile [dev.ssa] cmd/compile/internal/ssa: Fix scheduler 2015-08-04 00:31:56 +00:00
cover
dist [dev.ssa] Merge remote-tracking branch 'origin/master' into mergebranch 2015-07-30 12:30:48 -07:00
doc cmd/doc: extend darwin/arm64 test TODO to arm 2015-07-28 17:39:19 +00:00
fix cmd/fix: add gotypes module 2015-07-17 01:47:14 +00:00
go cmd: delete old[5689]a 2015-07-29 03:45:26 +00:00
gofmt
internal [dev.ssa] Merge remote-tracking branch 'origin/master' into mergebranch 2015-07-30 12:30:48 -07:00
link cmd/link: fix nosplit stack overflow checks 2015-07-29 21:36:16 +00:00
newlink cmd/link: elide individual gcbits symbols 2015-07-22 20:27:24 +00:00
nm
objdump
pack
pprof cmd/pprof: fix race between viewer and web command 2015-07-23 03:51:39 +00:00
trace runtime/trace: add new package 2015-07-22 15:47:16 +00:00
vet all: link to https instead of http 2015-07-11 14:36:33 +00:00
yacc