mirror of
https://github.com/golang/go
synced 2024-11-26 07:38:00 -07:00
cmd/compile: add a debug flag to enable/disable open-coded defers
For debugging. Change-Id: I831947376569cd2285b713ad304329951adf60ab Reviewed-on: https://go-review.googlesource.com/c/go/+/307230 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
dcf85b30ba
commit
e617b2b0dd
@ -39,6 +39,7 @@ type DebugFlags struct {
|
|||||||
Libfuzzer int `help:"enable coverage instrumentation for libfuzzer"`
|
Libfuzzer int `help:"enable coverage instrumentation for libfuzzer"`
|
||||||
LocationLists int `help:"print information about DWARF location list creation"`
|
LocationLists int `help:"print information about DWARF location list creation"`
|
||||||
Nil int `help:"print information about nil checks"`
|
Nil int `help:"print information about nil checks"`
|
||||||
|
NoOpenDefer int `help:"disable open-coded defers"`
|
||||||
PCTab string `help:"print named pc-value table"`
|
PCTab string `help:"print named pc-value table"`
|
||||||
Panic int `help:"show all compiler panics"`
|
Panic int `help:"show all compiler panics"`
|
||||||
Slice int `help:"print information about slice compilation"`
|
Slice int `help:"print information about slice compilation"`
|
||||||
|
@ -470,6 +470,8 @@ func buildssa(fn *ir.Func, worker int) *ssa.Func {
|
|||||||
|
|
||||||
s.hasOpenDefers = base.Flag.N == 0 && s.hasdefer && !s.curfn.OpenCodedDeferDisallowed()
|
s.hasOpenDefers = base.Flag.N == 0 && s.hasdefer && !s.curfn.OpenCodedDeferDisallowed()
|
||||||
switch {
|
switch {
|
||||||
|
case base.Debug.NoOpenDefer != 0:
|
||||||
|
s.hasOpenDefers = false
|
||||||
case s.hasOpenDefers && (base.Ctxt.Flag_shared || base.Ctxt.Flag_dynlink) && base.Ctxt.Arch.Name == "386":
|
case s.hasOpenDefers && (base.Ctxt.Flag_shared || base.Ctxt.Flag_dynlink) && base.Ctxt.Arch.Name == "386":
|
||||||
// Don't support open-coded defers for 386 ONLY when using shared
|
// Don't support open-coded defers for 386 ONLY when using shared
|
||||||
// libraries, because there is extra code (added by rewriteToUseGot())
|
// libraries, because there is extra code (added by rewriteToUseGot())
|
||||||
|
Loading…
Reference in New Issue
Block a user