tools/go
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
..
ast/astutil go/ast/astutil: do not merge if import path is last line 2017-05-29 01:35:25 +00:00
buildutil x/tools/go/buildutil: remove unused function 2017-03-01 14:53:57 +00:00
callgraph tools: updates for minimum Go version 1.6 2017-02-07 21:06:19 +00:00
gccgoexportdata go/gccgoexportdata: correctly handle archive files containing string tables 2016-11-09 21:28:38 +00:00
gcexportdata go/gcexportdata: fix test again (fix older builds) 2017-06-08 21:12:18 +00:00
gcimporter15 go/gcimporter: update to latest copy from master 2017-04-25 22:48:49 +00:00
internal/gccgoimporter x/tools/go/internal/gccgoimporter: remove unused method 2017-03-01 14:54:10 +00:00
loader go/loader: don't create types.Package for "unsafe" 2017-03-02 21:55:26 +00:00
pointer go/pointer: implement extended queries 2017-03-06 04:11:41 +00:00
ssa go/ssa: fix regression in φ-elimination 2017-06-15 18:36:17 +00:00
types/typeutil tools: updates for minimum Go version 1.6 2017-02-07 21:06:19 +00:00
vcs go/vcs: allow go get on github.com/ import paths with Unicode letters 2017-04-28 05:47:26 +00:00