aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/deadcode.go
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2015-05-28 16:45:33 -0700
committerKeith Randall <khr@golang.org>2015-05-30 06:08:26 +0000
commita9cec30fdcc549282e0a5d520edb2eaf60f3061a (patch)
treedbcd629c320607cb71e523e25e27349add3eed29 /src/cmd/compile/internal/ssa/deadcode.go
parentb0da62903d045f6d3e832ba1181387a1e9ad33f1 (diff)
downloadgo-a9cec30fdcc549282e0a5d520edb2eaf60f3061a.tar.gz
go-a9cec30fdcc549282e0a5d520edb2eaf60f3061a.zip
[dev.ssa] cmd/compile/internal/ssa: Implement block rewriting rules
Change-Id: I47e5349e34fc18118c4d35bf433f875b958cc3e5 Reviewed-on: https://go-review.googlesource.com/10495 Reviewed-by: Alan Donovan <adonovan@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/deadcode.go')
-rw-r--r--src/cmd/compile/internal/ssa/deadcode.go24
1 files changed, 2 insertions, 22 deletions
diff --git a/src/cmd/compile/internal/ssa/deadcode.go b/src/cmd/compile/internal/ssa/deadcode.go
index a805861489..ba5d8758d9 100644
--- a/src/cmd/compile/internal/ssa/deadcode.go
+++ b/src/cmd/compile/internal/ssa/deadcode.go
@@ -14,30 +14,10 @@ func deadcode(f *Func) {
reachable[f.Entry.ID] = true
p := []*Block{f.Entry} // stack-like worklist
for len(p) > 0 {
- // pop a reachable block
+ // Pop a reachable block
b := p[len(p)-1]
p = p[:len(p)-1]
-
- // constant-fold conditionals
- // TODO: rewrite rules instead?
- if b.Kind == BlockIf && b.Control.Op == OpConst {
- cond := b.Control.Aux.(bool)
- var c *Block
- if cond {
- // then branch is always taken
- c = b.Succs[1]
- } else {
- // else branch is always taken
- c = b.Succs[0]
- b.Succs[0] = b.Succs[1]
- }
- b.Succs[1] = nil // aid GC
- b.Succs = b.Succs[:1]
- removePredecessor(b, c)
- b.Kind = BlockPlain
- b.Control = nil
- }
-
+ // Mark successors as reachable
for _, c := range b.Succs {
if !reachable[c.ID] {
reachable[c.ID] = true