Go to file
Alan Donovan 6d30ceaab7 go/ssa: fix regression in φ-elimination
https://go-review.googlesource.com/37157 introduced a bug that caused
some live φ-nodes to be removed from the CFG.  The cause was that
reachability traversal considered edges only among "new" φ-nodes
(those introduced during SSA renaming) but not existing φ-nodes from
&& and || expressions.  The fix is to mark existing phis, and thus
other phis reachable from them, as live.  We also clear the Phi.block
field when eliminating a φ-node.

Also, during reachability, we treat DebugRef instructions as roots
like any other non-Phi instruction.  This eliminates a related known
bug whereby the operand of a DebugRef may be a dead φ.

This change also adds a sanity check that all operands of an SSA value
that are themselves instructions must belong to a block.  The sanity
check would fail 7 times on the standard library without the fix.

Fixes golang/go#19622

Change-Id: If3a897a6a593a17bc3f0f8228d1edf483be7a3d0
Reviewed-on: https://go-review.googlesource.com/45832
Run-TryBot: Dominik Honnef <dominik@honnef.co>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dominik Honnef <dominik@honnef.co>
2017-06-15 18:36:17 +00:00
benchmark/parse benchmark/parse: fix cosmetic defect in error str. 2015-02-02 17:07:43 +00:00
blog blog/atom: support atom:link as in RFC4287 4.2.7 2017-02-04 21:42:09 +00:00
cmd cmd/go-contrib-init: fix in-GOPATH check 2017-06-14 16:55:02 +00:00
container/intsets Revert "x/tools/container/intsets: remove unused function" 2017-03-01 14:51:44 +00:00
cover cover: fixed broken error message 2016-03-08 18:20:19 +00:00
go go/ssa: fix regression in φ-elimination 2017-06-15 18:36:17 +00:00
godoc godoc: fix crash in -analysis 2017-06-13 17:41:52 +00:00
imports imports: prefer paths imported by sibling files. 2017-06-09 17:18:19 +00:00
playground playground/socket: deflake test, remove sleep 2016-12-11 02:33:14 +00:00
present x/tools/present: fix element number check 2017-06-08 00:01:16 +00:00
refactor refactor/rename: add line number to ambiguityError 2017-05-10 14:27:37 +00:00
third_party cmd/heapview: dowgrade to customelements v0 2016-08-05 20:49:36 +00:00
.gitattributes tools: copying .gitattributes to all subrepositories (fixes windows build) 2014-12-23 06:32:51 +00:00
.gitignore dashboard: rearrange tree, in prep for packagification 2015-01-15 02:58:11 +00:00
AUTHORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
CONTRIBUTING.md doc: add CONTRIBUTING.md 2015-02-18 23:43:38 +00:00
CONTRIBUTORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
LICENSE LICENSE: add 2012-03-17 15:20:58 +11:00
PATENTS go.empty: add PATENTS file to the subrepo. 2012-04-16 11:24:04 +10:00
README x/tools: s/oracle/guru/g in various comments 2016-10-13 18:54:04 +00:00
codereview.cfg tools: add codereview.cfg 2015-03-18 17:04:00 +00:00

README

This subrepository holds the source for various packages and tools that support
the Go programming language.

Some of the tools, godoc and vet for example, are included in binary Go distributions.
Others, including the Go guru and the test coverage tool, can be fetched with "go get".

Packages include a type-checker for Go and an implementation of the
Static Single Assignment form (SSA) representation for Go programs.

To submit changes to this repository, see http://golang.org/doc/contribute.html.