aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ir/func.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/compile/internal/ir/func.go')
-rw-r--r--src/cmd/compile/internal/ir/func.go3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ir/func.go b/src/cmd/compile/internal/ir/func.go
index a74bb6ebda..d20836e006 100644
--- a/src/cmd/compile/internal/ir/func.go
+++ b/src/cmd/compile/internal/ir/func.go
@@ -481,6 +481,9 @@ func closureName(outerfn *Func, pos src.XPos, why Op) *types.Sym {
func NewClosureFunc(fpos, cpos src.XPos, why Op, typ *types.Type, outerfn *Func, pkg *Package) *Func {
fn := NewFunc(fpos, fpos, closureName(outerfn, cpos, why), typ)
fn.SetIsHiddenClosure(outerfn != nil)
+ if outerfn != nil {
+ fn.SetDupok(outerfn.Dupok()) // if the outer function is dupok, so is the closure
+ }
clo := &ClosureExpr{Func: fn}
clo.op = OCLOSURE