]> Cypherpunks repositories - gostls13.git/commit
[dev.ssa] cmd/compile: make failed nil checks panic
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 11 Aug 2015 16:47:45 +0000 (09:47 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 11 Aug 2015 21:52:48 +0000 (21:52 +0000)
commit463858e6ff8cacd3bf2dafebe56272f8a863d959
treea25aa721457a1974b609313451835bbb8c5f3ba4
parent2af06480140dd48a4dc54257c2da46a73ca3ebb5
[dev.ssa] cmd/compile: make failed nil checks panic

Introduce pseudo-ops PanicMem and LoweredPanicMem.
PanicMem could be rewritten directly into MOVL
during lowering, but then we couldn't log nil checks.

With this change, runnable nil check tests pass:

GOSSAPKG=main go run run.go -- nil*.go

Compiler output nil check tests fail:

GOSSAPKG=p go run run.go -- nil*.go

This is due to several factors:

* SSA has improved elimination of unnecessary nil checks.
* SSA is missing elimination of implicit nil checks.
* SSA is missing extra logging about why nil checks were removed.

I'm not sure how best to resolve these failures,
particularly in a world in which the two backends
will live side by side for some time.
For now, punt on the problem.

Change-Id: Ib2ca6824551671f92e0e1800b036f5ca0905e2a3
Reviewed-on: https://go-review.googlesource.com/13474
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/gc/ssa.go
src/cmd/compile/internal/ssa/gen/AMD64.rules
src/cmd/compile/internal/ssa/gen/AMD64Ops.go
src/cmd/compile/internal/ssa/gen/genericOps.go
src/cmd/compile/internal/ssa/lower.go
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/rewriteAMD64.go