aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/compile/internal/gc/walk.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/gc/walk.go b/src/cmd/compile/internal/gc/walk.go
index b4c38ec12b..69c8390fe0 100644
--- a/src/cmd/compile/internal/gc/walk.go
+++ b/src/cmd/compile/internal/gc/walk.go
@@ -2140,6 +2140,12 @@ func needwritebarrier(l *Node, r *Node) bool {
return false
}
+ // No write barrier for storing global function, which is live
+ // no matter what.
+ if r.Op == ONAME && r.Class == PFUNC {
+ return false
+ }
+
// Otherwise, be conservative and use write barrier.
return true
}