1// Copyright 2009 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Debug arguments, set by -d flag.
6
7package base
8
9// Debug holds the parsed debugging configuration values.
10var Debug DebugFlags
11
12// DebugFlags defines the debugging configuration values (see var Debug).
13// Each struct field is a different value, named for the lower-case of the field name.
14// Each field must be an int or string and must have a `help` struct tag.
15//
16// The -d option takes a comma-separated list of settings.
17// Each setting is name=value; for ints, name is short for name=1.
18type DebugFlags struct {
19	Append               int    `help:"print information about append compilation"`
20	Checkptr             int    `help:"instrument unsafe pointer conversions\n0: instrumentation disabled\n1: conversions involving unsafe.Pointer are instrumented\n2: conversions to unsafe.Pointer force heap allocation"`
21	Closure              int    `help:"print information about closure compilation"`
22	DclStack             int    `help:"run internal dclstack check"`
23	Defer                int    `help:"print information about defer compilation"`
24	DisableNil           int    `help:"disable nil checks"`
25	DumpPtrs             int    `help:"show Node pointers values in dump output"`
26	DwarfInl             int    `help:"print information about DWARF inlined function creation"`
27	Export               int    `help:"print export data"`
28	GCProg               int    `help:"print dump of GC programs"`
29	InlFuncsWithClosures int    `help:"allow functions with closures to be inlined"`
30	Libfuzzer            int    `help:"enable coverage instrumentation for libfuzzer"`
31	LocationLists        int    `help:"print information about DWARF location list creation"`
32	Nil                  int    `help:"print information about nil checks"`
33	NoOpenDefer          int    `help:"disable open-coded defers"`
34	PCTab                string `help:"print named pc-value table\nOne of: pctospadj, pctofile, pctoline, pctoinline, pctopcdata"`
35	Panic                int    `help:"show all compiler panics"`
36	Slice                int    `help:"print information about slice compilation"`
37	SoftFloat            int    `help:"force compiler to emit soft-float code"`
38	SyncFrames           int    `help:"how many writer stack frames to include at sync points in unified export data"`
39	TypeAssert           int    `help:"print information about type assertion inlining"`
40	TypecheckInl         int    `help:"eager typechecking of inline function bodies"`
41	Unified              int    `help:"enable unified IR construction"`
42	UnifiedQuirks        int    `help:"enable unified IR construction's quirks mode"`
43	WB                   int    `help:"print information about write barriers"`
44	ABIWrap              int    `help:"print information about ABI wrapper generation"`
45	MayMoreStack         string `help:"call named function before all stack growth checks"`
46
47	Any bool // set when any of the debug flags have been set
48}
49
50// DebugSSA is called to set a -d ssa/... option.
51// If nil, those options are reported as invalid options.
52// If DebugSSA returns a non-empty string, that text is reported as a compiler error.
53var DebugSSA func(phase, flag string, val int, valString string) string
54