diff options
| author | Cuong Manh Le <cuong.manhle.vn@gmail.com> | 2026-01-21 14:39:20 +0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2026-01-22 07:30:19 -0800 |
| commit | dae71067ce7ee41ebe752a4ee3c544506e74f824 (patch) | |
| tree | 400e212dc7aba8e8527b967aa751eb0af2cfd4ee /src/cmd/compile | |
| parent | adb64adfd74470a0653dde9214a1acb0ddf72268 (diff) | |
| download | go-dae71067ce7ee41ebe752a4ee3c544506e74f824.tar.xz | |
cmd/compile: fix mis-compilation for static array initialization
The bug was first introduced when the compiler is still written in C,
with CL 2254041. The static array was laid out with the wrong context,
causing a stack pointer will be stored in global object.
Fixes #61730
Fixes #77193
Change-Id: I22c8393314d251beb53db537043a63714c84f36a
Reviewed-on: https://go-review.googlesource.com/c/go/+/737821
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/compile')
| -rw-r--r-- | src/cmd/compile/internal/walk/complit.go | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/src/cmd/compile/internal/walk/complit.go b/src/cmd/compile/internal/walk/complit.go index 6452618f6c..1bc4d42c88 100644 --- a/src/cmd/compile/internal/walk/complit.go +++ b/src/cmd/compile/internal/walk/complit.go @@ -567,11 +567,7 @@ func anylit(n ir.Node, var_ ir.Node, init *ir.Nodes) { // lay out static data vstat := readonlystaticname(t) - ctxt := inInitFunction - if n.Op() == ir.OARRAYLIT { - ctxt = inNonInitFunction - } - fixedlit(ctxt, initKindStatic, n, vstat, init) + fixedlit(inInitFunction, initKindStatic, n, vstat, init) // copy static to var appendWalkStmt(init, ir.NewAssignStmt(base.Pos, var_, vstat)) |
