]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: run generic deadcode in -N mode
authorCherry Zhang <cherryyz@google.com>
Sat, 30 Jun 2018 21:46:25 +0000 (17:46 -0400)
committerCherry Zhang <cherryyz@google.com>
Mon, 2 Jul 2018 20:53:23 +0000 (20:53 +0000)
Late opt pass may generate dead stores, which messes up store
chain calculation in later passes. Run generic deadcode even
in -N mode to remove them.

Fixes #26163.

Change-Id: I8276101717bb978d5980e6c7998f53fd8d0ae10f
Reviewed-on: https://go-review.googlesource.com/121856
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ssa/compile.go
test/fixedbugs/issue26163.go [new file with mode: 0644]

index c7797d79e92a8cdde8b91c0a66fad587d7d4b5df..7f75dc4a03d5dad2e2475d9e43a5352ca96c82da 100644 (file)
@@ -373,7 +373,7 @@ var passes = [...]pass{
        {name: "softfloat", fn: softfloat, required: true},
        {name: "late opt", fn: opt, required: true}, // TODO: split required rules and optimizing rules
        {name: "dead auto elim", fn: elimDeadAutosGeneric},
-       {name: "generic deadcode", fn: deadcode},
+       {name: "generic deadcode", fn: deadcode, required: true}, // remove dead stores, which otherwise mess up store chain
        {name: "check bce", fn: checkbce},
        {name: "branchelim", fn: branchelim},
        {name: "fuse", fn: fuse},
diff --git a/test/fixedbugs/issue26163.go b/test/fixedbugs/issue26163.go
new file mode 100644 (file)
index 0000000..3f3d778
--- /dev/null
@@ -0,0 +1,17 @@
+// compile -N -d=softfloat
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 26163: dead store generated in late opt messes
+// up store chain calculation.
+
+package p
+
+var i int
+var A = ([]*int{})[i]
+
+var F func(float64, complex128) int
+var C chan complex128
+var B = F(1, 1+(<-C))