mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
cmd/compile: run generic deadcode in -N mode
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>
This commit is contained in:
parent
398a8ed653
commit
3f54e8537a
2 changed files with 18 additions and 1 deletions
|
@ -373,7 +373,7 @@ var passes = [...]pass{
|
||||||
{name: "softfloat", fn: softfloat, required: true},
|
{name: "softfloat", fn: softfloat, required: true},
|
||||||
{name: "late opt", fn: opt, required: true}, // TODO: split required rules and optimizing rules
|
{name: "late opt", fn: opt, required: true}, // TODO: split required rules and optimizing rules
|
||||||
{name: "dead auto elim", fn: elimDeadAutosGeneric},
|
{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: "check bce", fn: checkbce},
|
||||||
{name: "branchelim", fn: branchelim},
|
{name: "branchelim", fn: branchelim},
|
||||||
{name: "fuse", fn: fuse},
|
{name: "fuse", fn: fuse},
|
||||||
|
|
17
test/fixedbugs/issue26163.go
Normal file
17
test/fixedbugs/issue26163.go
Normal file
|
@ -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))
|
Loading…
Reference in a new issue