]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: better dclcontext handling in func{hdr,body}
authorMatthew Dempsky <mdempsky@google.com>
Mon, 14 Sep 2020 19:53:36 +0000 (12:53 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Mon, 14 Sep 2020 23:42:35 +0000 (23:42 +0000)
commit237410547bb81ae3c58e9c5bf0cf59edc989e243
treee05ecd25ac116c5fcd8ba7a495865c0bbf5f2dce
parent506eb0a9b1a7051f64788f330ea26722fa293f3c
cmd/compile: better dclcontext handling in func{hdr,body}

funchdr and funcbody currently assume that either (1) Curfn == nil &&
dclcontext == PEXTERN, or (2) Curfn != nil && dclcontext == PAUTO.
This is a reasonable assumption during parsing. However, these
functions end up getting used in other contexts, and not all callers
are so disciplined about Curfn/dclcontext handling.

This CL changes them to save/restore arbitrary Curfn/dclcontext pairs
instead. This is necessary for the followup CL, which pushes fninit
earlier. Otherwise, Curfn/dclcontext fall out of sync, and funchdr
panics.

Passes toolstash-check.

Updates #33485.

Change-Id: I19b1be23db1bad6475345ae5c81bbdc66291a3a7
Reviewed-on: https://go-review.googlesource.com/c/go/+/254838
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Trust: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/dcl.go
src/cmd/compile/internal/gc/main.go