1
0
mirror of https://github.com/golang/go synced 2024-11-19 03:34:41 -07:00

cmd/compile: un-hide closure func in init function

Same as CL 492135, but for init function.

Fixes #62277

Change-Id: If5ff9bc2ce2a73193b1f7ee5f7f14045d1354f56
Reviewed-on: https://go-review.googlesource.com/c/go/+/522956
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
Cuong Manh Le 2023-08-25 15:08:05 +07:00 committed by Gopher Robot
parent 59abd0e88b
commit 079c0441d5
4 changed files with 44 additions and 0 deletions

View File

@ -1159,6 +1159,12 @@ func TestIssue47873(t *testing.T) {
goCmd(t, "run", "-linkshared", "./issue47837/main") goCmd(t, "run", "-linkshared", "./issue47837/main")
} }
func TestIssue62277(t *testing.T) {
globalSkip(t)
goCmd(t, "install", "-buildmode=shared", "-linkshared", "./issue62277/p")
goCmd(t, "test", "-linkshared", "./issue62277")
}
// Test that we can build std in shared mode. // Test that we can build std in shared mode.
func TestStd(t *testing.T) { func TestStd(t *testing.T) {
if testing.Short() { if testing.Short() {

View File

@ -0,0 +1,16 @@
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package issue62277_test
import (
"testing"
"testshared/issue62277/p"
)
func TestIssue62277(t *testing.T) {
t.Log(p.S)
t.Log(p.T)
}

View File

@ -0,0 +1,17 @@
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package p
var S = func() []string {
return []string{"LD_LIBRARY_PATH"}
}()
var T []string
func init() {
T = func() []string {
return []string{"LD_LIBRARY_PATH"}
}()
}

View File

@ -3109,6 +3109,11 @@ func (r *reader) funcLit() ir.Node {
r.addBody(fn, nil) r.addBody(fn, nil)
// un-hide closures belong to init function.
if (r.curfn.IsPackageInit() || strings.HasPrefix(r.curfn.Sym().Name, "init.")) && ir.IsTrivialClosure(fn.OClosure) {
fn.SetIsHiddenClosure(false)
}
return fn.OClosure return fn.OClosure
} }