From 55ab07c224a358cabe795fb1e52a627194d7daee Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Tue, 19 Apr 2016 12:26:28 -0700 Subject: [PATCH] cmd/compile: static composite literals are side-effect free MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This extends CL 22192. This removes the remaining performance disparity between non-SSA and SSA on the AppendInPlace benchmarks. Going from non-SSA to SSA: AppendInPlace/NoGrow/2Ptr-8 1.60µs ± 5% 1.53µs ± 5% -4.04% (p=0.000 n=15+14) AppendInPlace/NoGrow/3Ptr-8 2.04µs ± 3% 1.96µs ± 2% -3.90% (p=0.000 n=13+14) AppendInPlace/NoGrow/4Ptr-8 2.83µs ± 8% 2.62µs ± 4% -7.39% (p=0.000 n=13+15) Previously these were 20% regressions. Change-Id: Ie87810bffd598730658e07585f5e2ef979a12b8f Reviewed-on: https://go-review.googlesource.com/22248 Reviewed-by: Keith Randall --- src/cmd/compile/internal/gc/subr.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cmd/compile/internal/gc/subr.go b/src/cmd/compile/internal/gc/subr.go index f6af11adba..51a78317f2 100644 --- a/src/cmd/compile/internal/gc/subr.go +++ b/src/cmd/compile/internal/gc/subr.go @@ -1328,6 +1328,11 @@ func safeexpr(n *Node, init *Nodes) *Node { a.Right = r a = walkexpr(a, init) return a + + case OSTRUCTLIT, OARRAYLIT: + if isStaticCompositeLiteral(n) { + return n + } } // make a copy; must not be used as an lvalue -- 2.48.1