1
0
mirror of https://github.com/golang/go synced 2024-10-05 20:21:21 -06:00
go/src
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
..
archive all: link to https instead of http 2015-07-11 14:36:33 +00:00
bufio bufio: Remove unneeded error initialization 2015-07-18 18:05:23 +00:00
builtin builtin: remove errant space in hyphenated adjective phrase 2015-06-28 21:41:38 +00:00
bytes Revert "bytes: document that Buffer values must not be copied" 2015-07-23 18:34:49 +00:00
cmd [dev.ssa] cmd/compile/internal/ssa: Fix scheduler 2015-08-04 00:31:56 +00:00
compress all: link to https instead of http 2015-07-11 14:36:33 +00:00
container
crypto crypto/x509: mark root_darwin_armx.go as cgo-only 2015-07-30 15:47:16 +00:00
database/sql database/sql: document closing requirements for Stmts 2015-07-15 04:31:41 +00:00
debug all: cleanup usage of dashes in package documentation 2015-07-28 02:44:41 +00:00
encoding encoding/json: test style tweaks 2015-07-28 06:23:38 +00:00
errors
expvar
flag flag: add comment stating that Set is called in sequence across the command line 2015-07-16 05:33:47 +00:00
fmt fmt: restore padding for %x on byte slices and strings 2015-06-29 07:17:23 +00:00
go go/internal/gcimporter: only run compile test if go tool is available 2015-07-27 17:54:02 +00:00
hash hash/crc32: speedup crc32 of IEEE using slicingBy8 2015-06-18 18:14:24 +00:00
html html/template: add examples to package and functions 2015-07-27 16:37:33 +00:00
image image/color: fix format typo in the tests. 2015-07-16 01:41:34 +00:00
index/suffixarray
internal runtime/trace: record event sequence numbers explicitly 2015-07-29 22:32:14 +00:00
io io: tweak Reader comment 2015-06-29 21:17:47 +00:00
log log: fix flaky test 2015-06-18 18:08:17 +00:00
math math/rand: warn against using package for security-sensitive work 2015-07-30 12:42:18 +00:00
mime all: cleanup usage of dashes in package documentation 2015-07-28 02:44:41 +00:00
net net: allow longer timeout in dialClosedPort test on windows 2015-07-30 15:19:17 +00:00
os runtime/cgo: move TMPDIR magic out of os 2015-07-27 16:05:42 +00:00
path all: link to https instead of http 2015-07-11 14:36:33 +00:00
reflect runtime, reflect: use correctly aligned stack frame sizes on arm64 2015-07-29 21:35:35 +00:00
regexp regexp: small correction to test comment 2015-06-14 17:09:13 +00:00
runtime runtime/cgo: fix darwin/amd64 signal handling setup 2015-07-30 19:18:45 +00:00
sort
strconv strconv: add examples to package 2015-07-22 16:00:21 +00:00
strings all: link to https for golang subdomains too 2015-07-12 04:42:40 +00:00
sync sync/atomic: reenable TestNilDeref everywhere 2015-07-30 16:38:29 +00:00
syscall syscall: warn not to use FormatMessage 2015-07-21 02:26:27 +00:00
testing runtime/trace: add new package 2015-07-22 15:47:16 +00:00
text text/template: make zero Template work again 2015-06-24 22:27:33 +00:00
time time: make it clearer how to format a fractional second 2015-07-15 05:13:05 +00:00
unicode unicode: upgrade to 8.0.0 2015-06-26 18:01:29 +00:00
unsafe
all.bash
all.bat
all.rc
androidtest.bash androidtest.bash: robust cleanup in case of failure. 2015-07-17 21:12:12 +00:00
bootstrap.bash
buildall.bash
clean.bash build: fix clean scripts 2015-06-18 16:13:13 +00:00
clean.bat build: fix clean scripts 2015-06-18 16:13:13 +00:00
clean.rc build: fix clean scripts 2015-06-18 16:13:13 +00:00
iostest.bash
make.bash doc: replace references to {5..9}{g,l} with go tool compile and go tool link 2015-06-17 04:05:50 +00:00
make.bat doc: replace references to {5..9}{g,l} with go tool compile and go tool link 2015-06-17 04:05:50 +00:00
Make.dist
make.rc doc: replace references to {5..9}{g,l} with go tool compile and go tool link 2015-06-17 04:05:50 +00:00
nacltest.bash
race.bash all: link to https instead of http 2015-07-11 14:36:33 +00:00
race.bat all: link to https instead of http 2015-07-11 14:36:33 +00:00
run.bash
run.bat
run.rc