]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: restore zero assignment optimization for non-pointer types
authorMatthew Dempsky <mdempsky@google.com>
Mon, 19 Dec 2016 16:19:50 +0000 (08:19 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Mon, 19 Dec 2016 17:25:26 +0000 (17:25 +0000)
golang.org/cl/31572 disabled some write barrier optimizations, but
inadvertantly disabled optimizations for some non-pointer composite
literal assignments too.

Fixes #18370.

Change-Id: Ia25019bd3016b6ab58173298c7d16202676bce6b
Reviewed-on: https://go-review.googlesource.com/34564
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/gc/walk.go

index 8248d503b385007ac2c5e7e83c37623e9dfe5d83..efe2016e46ca2c8be566259520d458881d03fb70 100644 (file)
@@ -694,6 +694,10 @@ opswitch:
                        break
                }
 
+               if !instrumenting && iszero(n.Right) && !needwritebarrier(n.Left, n.Right) {
+                       break
+               }
+
                switch n.Right.Op {
                default:
                        n.Right = walkexpr(n.Right, init)