From 3a17fdaba037aa0fac9ee06f2cd8636ba61182d0 Mon Sep 17 00:00:00 2001 From: David Chase Date: Thu, 17 Mar 2016 16:14:41 -0400 Subject: [PATCH] cmd/compile: correct maintain use count when phi args merge The critical phase did not correctly maintain the use count when two predecessors of a new critical block transmit the same value. Change-Id: Iba802c98ebb84e36a410721ec32c867140efb6d4 Reviewed-on: https://go-review.googlesource.com/20822 Reviewed-by: Keith Randall Reviewed-by: Todd Neal --- src/cmd/compile/internal/ssa/critical.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cmd/compile/internal/ssa/critical.go b/src/cmd/compile/internal/ssa/critical.go index b414913f94..38d4ca40dd 100644 --- a/src/cmd/compile/internal/ssa/critical.go +++ b/src/cmd/compile/internal/ssa/critical.go @@ -79,6 +79,7 @@ func critical(f *Func) { if reusedBlock { d.Preds = append(d.Preds, c) b.Preds[i] = nil + phi.Args[i].Uses-- phi.Args[i] = nil } else { // splice it in -- 2.48.1