aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCuong Manh Le <cuong.manhle.vn@gmail.com>2023-08-25 15:08:05 +0700
committerGopher Robot <gobot@golang.org>2023-08-26 01:54:41 +0000
commit079c0441d548494fd23ec0083b6f22fb128ea52d (patch)
treeb5bd71a7373677b188d56a2a043a0e1fd15b9fe1 /src
parent59abd0e88b4aecad099f21d00afbb50a78edc4c5 (diff)
downloadgo-079c0441d548494fd23ec0083b6f22fb128ea52d.tar.xz
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>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/cgo/internal/testshared/shared_test.go6
-rw-r--r--src/cmd/cgo/internal/testshared/testdata/issue62277/issue62277_test.go16
-rw-r--r--src/cmd/cgo/internal/testshared/testdata/issue62277/p/p.go17
-rw-r--r--src/cmd/compile/internal/noder/reader.go5
4 files changed, 44 insertions, 0 deletions
diff --git a/src/cmd/cgo/internal/testshared/shared_test.go b/src/cmd/cgo/internal/testshared/shared_test.go
index 2eab33f919..814b9994f8 100644
--- a/src/cmd/cgo/internal/testshared/shared_test.go
+++ b/src/cmd/cgo/internal/testshared/shared_test.go
@@ -1159,6 +1159,12 @@ func TestIssue47873(t *testing.T) {
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.
func TestStd(t *testing.T) {
if testing.Short() {
diff --git a/src/cmd/cgo/internal/testshared/testdata/issue62277/issue62277_test.go b/src/cmd/cgo/internal/testshared/testdata/issue62277/issue62277_test.go
new file mode 100644
index 0000000000..89a0601c9b
--- /dev/null
+++ b/src/cmd/cgo/internal/testshared/testdata/issue62277/issue62277_test.go
@@ -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)
+}
diff --git a/src/cmd/cgo/internal/testshared/testdata/issue62277/p/p.go b/src/cmd/cgo/internal/testshared/testdata/issue62277/p/p.go
new file mode 100644
index 0000000000..97bde0c10f
--- /dev/null
+++ b/src/cmd/cgo/internal/testshared/testdata/issue62277/p/p.go
@@ -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"}
+ }()
+}
diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go
index 01f001f199..374d9225b9 100644
--- a/src/cmd/compile/internal/noder/reader.go
+++ b/src/cmd/compile/internal/noder/reader.go
@@ -3109,6 +3109,11 @@ func (r *reader) funcLit() ir.Node {
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
}