go/src/cmd/compile/internal
Keith Randall 3134ab3c2d cmd/compile: redo nil checks
Get rid of BlockCheck. Josh goaded me into it, and I went
down a rabbithole making it happen.

NilCheck now panics if the pointer is nil and returns void, as before.
BlockCheck is gone, and NilCheck is no longer a Control value for
any block. It just exists (and deadcode knows not to throw it away).

I rewrote the nilcheckelim pass to handle this case.  In particular,
there can now be multiple NilCheck ops per block.

I moved all of the arch-dependent nil check elimination done as
part of ssaGenValue into its own proper pass, so we don't have to
duplicate that code for every architecture.

Making the arch-dependent nil check its own pass means I needed
to add a bunch of flags to the opcode table so I could write
the code without arch-dependent ops everywhere.

Change-Id: I419f891ac9b0de313033ff09115c374163416a9f
Reviewed-on: https://go-review.googlesource.com/29120
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
2016-09-15 02:42:13 +00:00
..
amd64 cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
arm cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
arm64 cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
big cmd/compile/internal/big: re-vendor 2016-08-16 14:51:21 +00:00
gc cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
mips64 cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
ppc64 cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
s390x cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
ssa cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00
syntax cmd/compile/internal/syntax: remove strbyteseql 2016-09-09 19:25:56 +00:00
test cmd/compile: Move divconst_test out of test/bench/go1 2016-04-29 16:20:18 +00:00
x86 cmd/compile: redo nil checks 2016-09-15 02:42:13 +00:00