SYMBOL INDEX (3985 symbols across 798 files) FILE: add-check.go function main (line 51) | func main() { function writeFile (line 138) | func writeFile(path string, data []byte) { function mkdirp (line 144) | func mkdirp(path string) { FILE: analysis/callcheck/callcheck.go type Call (line 18) | type Call struct method Invalid (line 28) | func (c *Call) Invalid(msg string) { type Argument (line 32) | type Argument struct method Invalid (line 41) | func (arg *Argument) Invalid(msg string) { type Value (line 37) | type Value struct type Check (line 45) | type Check function Analyzer (line 47) | func Analyzer(rules map[string]Check) func(pass *analysis.Pass) (any, er... function checkCalls (line 53) | func checkCalls(pass *analysis.Pass, rules map[string]Check) (any, error) { function eachCall (line 127) | func eachCall(fn *ir.Function, cb func(caller *ir.Function, site ir.Call... function ExtractConstExpectKind (line 139) | func ExtractConstExpectKind(v Value, kind constant.Kind) *ir.Const { function ExtractConst (line 147) | func ExtractConst(v Value) *ir.Const { function extractConst (line 151) | func extractConst(v ir.Value) *ir.Const { FILE: analysis/code/code.go type Positioner (line 27) | type Positioner interface function IsOfStringConvertibleByteSlice (line 31) | func IsOfStringConvertibleByteSlice(pass *analysis.Pass, expr ast.Expr) ... function IsOfPointerToTypeWithName (line 45) | func IsOfPointerToTypeWithName(pass *analysis.Pass, expr ast.Expr, name ... function IsOfTypeWithName (line 53) | func IsOfTypeWithName(pass *analysis.Pass, expr ast.Expr, name string) b... function IsInTest (line 57) | func IsInTest(pass *analysis.Pass, node Positioner) bool { function IsMain (line 66) | func IsMain(pass *analysis.Pass) bool { function IsMainLike (line 79) | func IsMainLike(pass *analysis.Pass) bool { function SelectorName (line 91) | func SelectorName(pass *analysis.Pass, expr *ast.SelectorExpr) string { function IsNil (line 115) | func IsNil(pass *analysis.Pass, expr ast.Expr) bool { function BoolConst (line 119) | func BoolConst(pass *analysis.Pass, expr ast.Expr) bool { function IsBoolConst (line 124) | func IsBoolConst(pass *analysis.Pass, expr ast.Expr) bool { function ExprToInt (line 149) | func ExprToInt(pass *analysis.Pass, expr ast.Expr) (int64, bool) { function ExprToString (line 160) | func ExprToString(pass *analysis.Pass, expr ast.Expr) (string, bool) { function CallName (line 171) | func CallName(pass *analysis.Pass, call *ast.CallExpr) string { function IsCallTo (line 209) | func IsCallTo(pass *analysis.Pass, node ast.Node, name string) bool { function IsCallToAny (line 220) | func IsCallToAny(pass *analysis.Pass, node ast.Node, names ...string) bo... function File (line 232) | func File(pass *analysis.Pass, node Positioner) *ast.File { function BuildConstraints (line 239) | func BuildConstraints(pass *analysis.Pass, f *ast.File) (constraint.Expr... function constraintsFromName (line 273) | func constraintsFromName(name string) constraint.Expr { function IsGenerated (line 323) | func IsGenerated(pass *analysis.Pass, pos token.Pos) bool { function Generator (line 330) | func Generator(pass *analysis.Pass, pos token.Pos) (generated.Generator,... function MayHaveSideEffects (line 342) | func MayHaveSideEffects(pass *analysis.Pass, expr ast.Expr, purity purit... function LanguageVersion (line 438) | func LanguageVersion(pass *analysis.Pass, node Positioner) string { function StdlibVersion (line 491) | func StdlibVersion(pass *analysis.Pass, node Positioner) string { function IntegerLiteral (line 547) | func IntegerLiteral(pass *analysis.Pass, node ast.Node) (types.TypeAndVa... function IsIntegerLiteral (line 555) | func IsIntegerLiteral(pass *analysis.Pass, node ast.Node, value constant... function IsMethod (line 566) | func IsMethod(pass *analysis.Pass, expr *ast.SelectorExpr, name string, ... function RefersTo (line 577) | func RefersTo(pass *analysis.Pass, expr ast.Expr, ident types.Object) bo... FILE: analysis/code/code_test.go function TestConstraintsFromName (line 25) | func TestConstraintsFromName(t *testing.T) { function FuzzConstraintsFromName (line 38) | func FuzzConstraintsFromName(f *testing.F) { FILE: analysis/code/visit.go function Cursor (line 23) | func Cursor(pass *analysis.Pass) inspector.Cursor { function Preorder (line 27) | func Preorder(pass *analysis.Pass, fn func(ast.Node), types ...ast.Node) { function PreorderStack (line 31) | func PreorderStack(pass *analysis.Pass, fn func(ast.Node, []ast.Node), t... function Matches (line 40) | func Matches(pass *analysis.Pass, qs ...pattern.Pattern) iter.Seq2[ast.N... function Match (line 83) | func Match(pass *analysis.Pass, q pattern.Pattern, node ast.Node) (*patt... function CouldMatchAny (line 92) | func CouldMatchAny(pass *analysis.Pass, qs ...pattern.Pattern) bool { function MatchAndEdit (line 127) | func MatchAndEdit(pass *analysis.Pass, before, after pattern.Pattern, no... function EditMatch (line 143) | func EditMatch(pass *analysis.Pass, node ast.Node, m *pattern.Matcher, a... FILE: analysis/dfa/dfa.go constant debugging (line 17) | debugging = false function debugf (line 19) | func debugf(f string, args ...any) { type Join (line 40) | type Join type Mapping (line 43) | type Mapping struct type Decision (line 51) | type Decision struct method String (line 62) | func (m Mapping[S]) String() string { function M (line 67) | func M[S comparable](v ir.Value, s S, d Decision) Mapping[S] { function Ms (line 76) | func Ms[S comparable](ms ...Mapping[S]) []Mapping[S] { type Framework (line 93) | type Framework struct method Start (line 101) | func (fw *Framework[S]) Start() *Instance[S] { method Forward (line 114) | func (fw *Framework[S]) Forward(fn *ir.Function) *Instance[S] { function Dot (line 131) | func Dot[S comparable](fn Join[S], states []S, bottom, top S) string { type Instance (line 161) | type Instance struct method Set (line 170) | func (ins *Instance[S]) Set(v ir.Value, d S) { method Value (line 175) | func (ins *Instance[S]) Value(v ir.Value) S { method Decision (line 185) | func (ins *Instance[S]) Decision(v ir.Value) Decision { function join (line 191) | func join[S comparable](fn Join[S], a, b, bottom, top S) S { method Forward (line 207) | func (ins *Instance[S]) Forward(fn *ir.Function) { method Propagate (line 270) | func (ins *Instance[S]) Propagate(dst, src ir.Value, desc string) Mappin... method Transform (line 274) | func (ins *Instance[S]) Transform(dst ir.Value, s S, src ir.Value, desc ... function printMapping (line 278) | func printMapping[S any](fn *ir.Function, m map[ir.Value]S) { function BinaryTable (line 299) | func BinaryTable[S comparable](default_ S, m map[[2]S]S) func(S, S) S { function JoinTable (line 313) | func JoinTable[S comparable](top S, m map[[2]S]S) Join[S] { function PowerSet (line 325) | func PowerSet[S constraints.Integer](all S) []S { function MapSet (line 333) | func MapSet[S constraints.Integer](set S, fn func(S) S) S { function MapCartesianProduct (line 344) | func MapCartesianProduct[S constraints.Integer](x, y S, fn func(S, S) S)... FILE: analysis/edit/edit.go type Ranger (line 16) | type Ranger interface type Range (line 22) | type Range method Pos (line 24) | func (r Range) Pos() token.Pos { return r[0] } method End (line 25) | func (r Range) End() token.Pos { return r[1] } function ReplaceWithString (line 28) | func ReplaceWithString(old Ranger, new string) analysis.TextEdit { function ReplaceWithNode (line 37) | func ReplaceWithNode(fset *token.FileSet, old Ranger, new ast.Node) anal... function ReplaceWithPattern (line 50) | func ReplaceWithPattern(fset *token.FileSet, old Ranger, new pattern.Pat... function Delete (line 62) | func Delete(old Ranger) analysis.TextEdit { function Fix (line 70) | func Fix(msg string, edits ...analysis.TextEdit) analysis.SuggestedFix { function Selector (line 78) | func Selector(x, sel string) *ast.SelectorExpr { FILE: analysis/facts/deprecated/deprecated.go type IsDeprecated (line 13) | type IsDeprecated struct method AFact (line 15) | func (*IsDeprecated) AFact() {} method String (line 16) | func (d *IsDeprecated) String() string { return "Deprecated: " + d.Msg } type Result (line 18) | type Result struct function deprecated (line 31) | func deprecated(pass *analysis.Pass) (any, error) { FILE: analysis/facts/deprecated/deprecated_test.go function TestDeprecated (line 9) | func TestDeprecated(t *testing.T) { FILE: analysis/facts/deprecated/testdata/src/example.com/Deprecated/Deprecated.go function fn2 (line 4) | func fn2() { // want fn2:`Deprecated: Don't use this\.` function fn3 (line 12) | func fn3() { // want fn3:`Deprecated: Don't use this\.` type pair (line 40) | type pair struct type cube (line 41) | type cube struct FILE: analysis/facts/directives/directives.go function directives (line 10) | func directives(pass *analysis.Pass) (any, error) { FILE: analysis/facts/generated/generated.go type Generator (line 14) | type Generator constant Unknown (line 18) | Unknown Generator = iota constant Goyacc (line 19) | Goyacc constant Cgo (line 20) | Cgo constant Stringer (line 21) | Stringer constant ProtocGenGo (line 22) | ProtocGenGo function isGenerated (line 34) | func isGenerated(path string) (Generator, bool) { FILE: analysis/facts/nilness/nilness.go type neverReturnsNilFact (line 19) | type neverReturnsNilFact struct method AFact (line 23) | func (*neverReturnsNilFact) AFact() {} method String (line 24) | func (fact *neverReturnsNilFact) String() string { type Result (line 28) | type Result struct method MayReturnNil (line 48) | func (r *Result) MayReturnNil(fn *types.Func, ret int) (yes bool, glob... function run (line 60) | func run(pass *analysis.Pass) (any, error) { type neverNilness (line 76) | type neverNilness method String (line 84) | func (n neverNilness) String() string { constant neverNil (line 79) | neverNil neverNilness = 1 constant onlyGlobal (line 80) | onlyGlobal neverNilness = 2 constant nilly (line 81) | nilly neverNilness = 3 function impl (line 97) | func impl(pass *analysis.Pass, fn *ir.Function, seenFns map[*ir.Function... FILE: analysis/facts/nilness/nilness_test.go function TestNilness (line 9) | func TestNilness(t *testing.T) { FILE: analysis/facts/nilness/testdata/src/example.com/Nilness/Nilness.go type T (line 5) | type T struct type T2 (line 6) | type T2 function fn1 (line 8) | func fn1() *T { function fn2 (line 15) | func fn2() *T { // want fn2:`never returns nil: \[never\]` function fn3 (line 19) | func fn3() *T { // want fn3:`never returns nil: \[never\]` function fn4 (line 23) | func fn4() *T { // want fn4:`never returns nil: \[never\]` function fn5 (line 27) | func fn5() *T { function fn6 (line 31) | func fn6() *T2 { // want fn6:`never returns nil: \[never\]` function fn7 (line 35) | func fn7() interface{} { function fn8 (line 39) | func fn8() interface{} { // want fn8:`never returns nil: \[never\]` function fn9 (line 43) | func fn9() []int { // want fn9:`never returns nil: \[never\]` function fn10 (line 49) | func fn10(x []int) []int { function fn11 (line 53) | func fn11(x *T) *T { function fn12 (line 57) | func fn12(x *T) *int { function fn13 (line 61) | func fn13() *int { // want fn13:`never returns nil: \[never\]` function fn14 (line 65) | func fn14() []int { // want fn14:`never returns nil: \[never\]` function fn15 (line 69) | func fn15() []int { // want fn15:`never returns nil: \[never\]` function fn16 (line 73) | func fn16() []int { function fn17 (line 77) | func fn17() error { function fn18 (line 84) | func fn18() (err error) { // want fn18:`never returns nil: \[never\]` function fn19 (line 94) | func fn19() *int { // want fn19:`never returns nil: \[global\]` function fn20 (line 98) | func fn20() *int { function fn27 (line 105) | func fn27[T ~struct{ F int }]() T { function fn28 (line 109) | func fn28[T [8]int]() T { function fn29 (line 113) | func fn29[T []int]() T { // want fn29:`never returns nil: \[never\]` FILE: analysis/facts/nilness/testdata/src/example.com/Nilness/Nilness_go118.go function generic1 (line 6) | func generic1[T []byte | string](s T) T { function generic2 (line 18) | func generic2[T [4]byte | string](s T) T { function generic3 (line 34) | func generic3[T []byte | string](s T) T { // want generic3:`never return... FILE: analysis/facts/nilness/testdata/src/example.com/Nilness/Nilness_go17.go function fn21 (line 6) | func fn21() *[5]int { // want fn21:`never returns nil: \[never\]` function fn22 (line 11) | func fn22() *[0]int { function fn23 (line 16) | func fn23() *[5]int { // want fn23:`never returns nil: \[never\]` function fn24 (line 23) | func fn24() *[0]int { function fn25 (line 30) | func fn25() *[5]int { // want fn25:`never returns nil: \[never\]` function fn26 (line 36) | func fn26() *[0]int { FILE: analysis/facts/purity/purity.go type IsPure (line 17) | type IsPure struct method AFact (line 19) | func (*IsPure) AFact() {} method String (line 20) | func (d *IsPure) String() string { return "is pure" } type Result (line 22) | type Result function purity (line 107) | func purity(pass *analysis.Pass) (any, error) { FILE: analysis/facts/purity/purity_test.go function TestPurity (line 9) | func TestPurity(t *testing.T) { FILE: analysis/facts/purity/testdata/src/example.com/Purity/CheckPureFunctions.go function foo (line 3) | func foo(a, b int) int { return a + b } function bar (line 4) | func bar(a, b int) int { function empty (line 9) | func empty() {} function stubPointer (line 10) | func stubPointer() *int { return nil } function stubInt (line 11) | func stubInt() int { return 0 } function fn3 (line 13) | func fn3() { function ptr1 (line 19) | func ptr1() *int { return new(int) } function ptr2 (line 20) | func ptr2() *int { var x int; return &x } function lit (line 21) | func lit() []int { return []int{} } function load (line 25) | func load() int { _ = X; return 0 } function assign (line 26) | func assign(x int) int { _ = x; return 0 } type pureStruct1 (line 28) | type pureStruct1 struct method get (line 38) | func (arg pureStruct1) get() int { // want get:"is pure" type pureStruct2 (line 34) | type pureStruct2 struct FILE: analysis/facts/typedness/testdata/src/example.com/Typedness/Typedness.go type T (line 8) | type T struct function notAStub (line 10) | func notAStub() {} function fn1 (line 12) | func fn1() *int { return nil } function fn2 (line 13) | func fn2() (int, *int, int) { return 0, nil, 0 } function fn3 (line 15) | func fn3() (out1 int, out2 error) { notAStub(); return 0, nil } function fn4 (line 16) | func fn4() error { notAStub(); return nil } function gen2 (line 18) | func gen2() (out1 interface{}) { // want gen2:`always typed: 00000001` function gen3 (line 22) | func gen3() (out1 interface{}) { // want gen3:`always typed: 00000001` function gen4 (line 28) | func gen4() (out1 int, out2 interface{}, out3 *int) { // want gen4:`alwa... function gen5 (line 34) | func gen5() (out1 interface{}) { // want gen5:`always typed: 00000001` function gen6 (line 39) | func gen6(b bool) interface{} { function gen7 (line 49) | func gen7() (out1 interface{}) { // want gen7:`always typed: 00000001` function gen8 (line 54) | func gen8(x *int) (out1 interface{}) { // want gen8:`always typed: 00000... function gen9 (line 62) | func gen9() (out1 interface{}) { // want gen9:`always typed: 00000001` function gen10 (line 68) | func gen10() (out1 interface{}) { // want gen10:`always typed: 00000001` function gen11 (line 77) | func gen11() interface{} { function gen12 (line 86) | func gen12(b bool) (out1 interface{}) { // want gen12:`always typed: 000... function gen13 (line 97) | func gen13() (out1 interface{}) { // want gen13:`always typed: 00000001` function gen14 (line 103) | func gen14(ch chan *int) (out1 interface{}) { // want gen14:`always type... function gen15 (line 108) | func gen15() (out1 interface{}) { // want gen15:`always typed: 00000001` function gen16 (line 116) | func gen16() (out1 interface{}) { // want gen16:`always typed: 00000001` function gen17 (line 120) | func gen17(x interface{}) interface{} { function gen18 (line 128) | func gen18() (int, error) { function gen19 (line 137) | func gen19() (out interface{}) { function gen20 (line 145) | func gen20() (out interface{}) { function gen21 (line 153) | func gen21() error { function gen22 (line 160) | func gen22() interface{} { function gen23 (line 165) | func gen23() interface{} { function gen24 (line 169) | func gen24() interface{} { function gen25 (line 173) | func gen25(x interface{}) (out1 interface{}) { // want gen25:`always typ... function gen26 (line 177) | func gen26(x interface{}) interface{} { function gen27 (line 182) | func gen27(x interface{}) (out1 interface{}) { type Error (line 188) | type Error struct method Error (line 190) | func (*Error) Error() string { return "" } function gen28 (line 192) | func gen28() (out1 interface{}) { // want gen28:`always typed: 00000001` function gen29 (line 198) | func gen29() (out1 interface{}) { // want gen29:`always typed: 00000001` function gen30 (line 204) | func gen30() (out1, out2 interface{}) { // want gen30:`always typed: 000... function gen31 (line 208) | func gen31() (out1 interface{}) { // want gen31:`always typed: 00000001` function gen32 (line 213) | func gen32() (out1 interface{}) { // want gen32:`always typed: 00000001` function gen33 (line 218) | func gen33() (out1 interface{}) { // want gen33:`always typed: 00000001` function gen34 (line 224) | func gen34() (out1, out2 interface{}) { // want gen34:`always typed: 000... function gen35 (line 228) | func gen35() (out1 interface{}) { function gen36 (line 233) | func gen36() (out1 interface{}) { // want gen36:`always typed: 00000001` FILE: analysis/facts/typedness/typedness.go type alwaysTypedFact (line 19) | type alwaysTypedFact struct method AFact (line 23) | func (*alwaysTypedFact) AFact() {} method String (line 24) | func (fact *alwaysTypedFact) String() string { type Result (line 28) | type Result struct method MustReturnTyped (line 47) | func (r *Result) MustReturnTyped(fn *types.Func, ret int) bool { function run (line 54) | func run(pass *analysis.Pass) (any, error) { function impl (line 70) | func impl(pass *analysis.Pass, fn *ir.Function, seenFns map[*ir.Function... FILE: analysis/facts/typedness/typedness_test.go function TestTypedness (line 9) | func TestTypedness(t *testing.T) { FILE: analysis/lint/lint.go type Analyzer (line 16) | type Analyzer struct function InitializeAnalyzer (line 24) | func InitializeAnalyzer(a *Analyzer) *Analyzer { type Severity (line 32) | type Severity constant SeverityNone (line 35) | SeverityNone Severity = iota constant SeverityError (line 36) | SeverityError constant SeverityDeprecated (line 37) | SeverityDeprecated constant SeverityWarning (line 38) | SeverityWarning constant SeverityInfo (line 39) | SeverityInfo constant SeverityHint (line 40) | SeverityHint type MergeStrategy (line 44) | type MergeStrategy constant MergeIfAny (line 47) | MergeIfAny MergeStrategy = iota constant MergeIfAll (line 48) | MergeIfAll type RawDocumentation (line 51) | type RawDocumentation struct method Compile (line 79) | func (doc RawDocumentation) Compile() *Documentation { type Documentation (line 63) | type Documentation struct method Format (line 105) | func (doc *Documentation) Format(metadata bool) string { method FormatMarkdown (line 109) | func (doc *Documentation) FormatMarkdown(metadata bool) string { method format (line 113) | func (doc *Documentation) format(markdown bool, metadata bool) string { method String (line 165) | func (doc *Documentation) String() string { function toMarkdown (line 97) | func toMarkdown(s string) string { function stripMarkdown (line 101) | func stripMarkdown(s string) string { function ExhaustiveTypeSwitch (line 171) | func ExhaustiveTypeSwitch(v any) { type Directive (line 178) | type Directive struct function parseDirective (line 185) | func parseDirective(s string) (cmd string, args []string) { function ParseDirectives (line 195) | func ParseDirectives(files []*ast.File, fset *token.FileSet) []Directive { FILE: analysis/lint/testutil/check.go function CheckSuggestedFixes (line 29) | func CheckSuggestedFixes(t *testing.T, diagnostics []runner.Diagnostic) { function Check (line 173) | func Check(t *testing.T, gopath string, files []string, diagnostics []ru... function applyEdits (line 304) | func applyEdits(src []byte, edits []runner.TextEdit) []byte { FILE: analysis/lint/testutil/util.go type Test (line 23) | type Test struct function computeSalt (line 28) | func computeSalt() ([]byte, error) { function Run (line 52) | func Run(t *testing.T, a *lint.Analyzer) { FILE: analysis/report/report.go type Options (line 21) | type Options struct type Option (line 32) | type Option function ShortRange (line 34) | func ShortRange() Option { function FilterGenerated (line 40) | func FilterGenerated() Option { function Fixes (line 46) | func Fixes(fixes ...analysis.SuggestedFix) Option { function Related (line 52) | func Related(node Positioner, message string) Option { function MinimumLanguageVersion (line 67) | func MinimumLanguageVersion(vers string) Option { function MaximumLanguageVersion (line 70) | func MaximumLanguageVersion(vers string) Option { function MinimumStdlibVersion (line 73) | func MinimumStdlibVersion(vers string) Option { function MaximumStdlibVersion (line 76) | func MaximumStdlibVersion(vers string) Option { type Positioner (line 80) | type Positioner interface type fullPositioner (line 84) | type fullPositioner interface type sourcer (line 89) | type sourcer interface function shortRange (line 97) | func shortRange(node ast.Node) (pos, end token.Pos) { function HasRange (line 152) | func HasRange(node Positioner) bool { function getRange (line 163) | func getRange(node Positioner, short bool) (pos, end token.Pos, ok bool) { function Report (line 186) | func Report(pass *analysis.Pass, node Positioner, message string, opts .... function Render (line 229) | func Render(pass *analysis.Pass, x any) string { function RenderArgs (line 237) | func RenderArgs(pass *analysis.Pass, args []ast.Expr) string { function DisplayPosition (line 245) | func DisplayPosition(fset *token.FileSet, p token.Pos) token.Position { function Ordinal (line 263) | func Ordinal(n int) string { FILE: analysis/report/report_test.go function TestOrdinal (line 5) | func TestOrdinal(t *testing.T) { FILE: cmd/staticcheck/staticcheck.go function main (line 17) | func main() { FILE: cmd/structlayout-optimize/main.go function init (line 24) | func init() { function main (line 30) | func main() { function combine (line 68) | func combine(fields []st.Field) []st.Field { function optimize (line 105) | func optimize(fields []st.Field) { function pad (line 109) | func pad(fields []st.Field) []st.Field { function size (line 150) | func size(fields []st.Field) int64 { type byAlignAndSize (line 158) | type byAlignAndSize struct method Len (line 162) | func (s *byAlignAndSize) Len() int { return len(s.fields) } method Swap (line 163) | func (s *byAlignAndSize) Swap(i, j int) { method Less (line 167) | func (s *byAlignAndSize) Less(i, j int) bool { function offsetsof (line 189) | func offsetsof(fields []st.Field) []int64 { function align (line 202) | func align(x, a int64) int64 { FILE: cmd/structlayout-pretty/main.go function init (line 22) | func init() { function main (line 27) | func main() { FILE: cmd/structlayout/main.go function init (line 25) | func init() { function main (line 30) | func main() { function emitJSON (line 80) | func emitJSON(fields []st.Field) { function emitText (line 87) | func emitText(fields []st.Field) { function sizes (line 92) | func sizes(typ *types.Struct, prefix string, base int64, out []st.Field)... FILE: config/config.go function Dir (line 22) | func Dir(files []string) string { function dirAST (line 51) | func dirAST(files []*ast.File, fset *token.FileSet) string { function For (line 78) | func For(pass *analysis.Pass) *Config { function mergeLists (line 82) | func mergeLists(a, b []string) []string { function normalizeList (line 95) | func normalizeList(list []string) []string { type Config (line 134) | type Config struct method Merge (line 118) | func (cfg Config) Merge(ocfg Config) Config { method String (line 148) | func (c Config) String() string { constant ConfigName (line 185) | ConfigName = "staticcheck.conf" type ParseError (line 187) | type ParseError struct function parseConfigs (line 192) | func parseConfigs(dir string) ([]Config, error) { function mergeConfigs (line 249) | func mergeConfigs(confs []Config) Config { function Load (line 265) | func Load(dir string) (Config, error) { FILE: debug/debug.go function TypeCheck (line 17) | func TypeCheck(src string) (*ast.File, *types.Package, *types.Info, erro... function FormatNode (line 43) | func FormatNode(node ast.Node) string { function AliasesEnabled (line 53) | func AliasesEnabled() bool { FILE: generate.go function main (line 52) | func main() { FILE: go/ast/astutil/upstream.go function Apply (line 14) | func Apply(root ast.Node, pre, post ApplyFunc) (result ast.Node) { function PathEnclosingInterval (line 18) | func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path [... FILE: go/ast/astutil/util.go function IsIdent (line 13) | func IsIdent(expr ast.Expr, ident string) bool { function IsBlank (line 20) | func IsBlank(id ast.Expr) bool { function IsIntLiteral (line 26) | func IsIntLiteral(expr ast.Expr, literal string) bool { function IsZero (line 32) | func IsZero(expr ast.Expr) bool { function Preamble (line 36) | func Preamble(f *ast.File) string { function GroupSpecs (line 51) | func GroupSpecs(fset *token.FileSet, specs []ast.Spec) [][]ast.Spec { function Unparen (line 73) | func Unparen(e ast.Expr) ast.Expr { function CopyExpr (line 85) | func CopyExpr(node ast.Expr) (ast.Expr, bool) { function Equal (line 236) | func Equal(a, b ast.Node) bool { function NegateDeMorgan (line 366) | func NegateDeMorgan(expr ast.Expr, recursive bool) ast.Expr { function SimplifyParentheses (line 437) | func SimplifyParentheses(node ast.Expr) ast.Expr { FILE: go/buildid/buildid.go function ReadFile (line 28) | func ReadFile(name string) (id string, err error) { function readGccgoArchive (line 106) | func readGccgoArchive(name string, f *os.File) (string, error) { function readBinary (line 185) | func readBinary(name string, f *os.File) (id string, err error) { function readRaw (line 220) | func readRaw(name string, data []byte) (id string, err error) { FILE: go/buildid/note.go function readAligned4 (line 17) | func readAligned4(r io.Reader, sz int32) ([]byte, error) { function ReadELFNote (line 28) | func ReadELFNote(filename, name string, typ int32) ([]byte, error) { function readELF (line 78) | func readELF(name string, f *os.File, data []byte) (buildid string, err ... function readMacho (line 174) | func readMacho(name string, f *os.File, data []byte) (buildid string, er... FILE: go/gcsizes/sizes.go type Sizes (line 14) | type Sizes struct method Alignof (line 32) | func (s *Sizes) Alignof(T types.Type) int64 { method Offsetsof (line 60) | func (s *Sizes) Offsetsof(fields []*types.Var) []int64 { method Sizeof (line 88) | func (s *Sizes) Sizeof(T types.Type) int64 { function ForArch (line 20) | func ForArch(arch string) *Sizes { function align (line 135) | func align(x, a int64) int64 { FILE: go/ir/bench_test.go function BenchmarkSSA (line 10) | func BenchmarkSSA(b *testing.B) { FILE: go/ir/blockopt.go constant debugBlockOpt (line 20) | debugBlockOpt = false function markReachable (line 23) | func markReachable(b *BasicBlock) { function deleteUnreachableBlocks (line 34) | func deleteUnreachableBlocks(f *Function) { function jumpThreading (line 66) | func jumpThreading(f *Function, b *BasicBlock) bool { function fuseBlocks (line 119) | func fuseBlocks(f *Function, a *BasicBlock) bool { function optimizeBlocks (line 167) | func optimizeBlocks(f *Function) { FILE: go/ir/builder.go function jReady (line 62) | func jReady() *Const { function jBusy (line 69) | func jBusy() *Const { function jDone (line 76) | func jDone() *Const { type builder (line 84) | type builder struct method cond (line 94) | func (b *builder) cond(fn *Function, e ast.Expr, t, f *BasicBlock) *If { method logicalBinop (line 132) | func (b *builder) logicalBinop(fn *Function, e *ast.BinaryExpr) Value { method exprN (line 191) | func (b *builder) exprN(fn *Function, e ast.Expr) Value { method builtin (line 232) | func (b *builder) builtin(fn *Function, obj *types.Builtin, args []ast... method addr (line 348) | func (b *builder) addr(fn *Function, e ast.Expr, escaping bool) (RET l... method assign (line 514) | func (b *builder) assign(fn *Function, loc lvalue, e ast.Expr, isZero ... method expr (line 586) | func (b *builder) expr(fn *Function, e ast.Expr) Value { method expr0 (line 611) | func (b *builder) expr0(fn *Function, e ast.Expr, tv types.TypeAndValu... method stmtList (line 892) | func (b *builder) stmtList(fn *Function, list []ast.Stmt) { method receiver (line 908) | func (b *builder) receiver(fn *Function, e ast.Expr, wantAddr, escapin... method setCallFunc (line 927) | func (b *builder) setCallFunc(fn *Function, e *ast.CallExpr, c *CallCo... method emitCallArgs (line 993) | func (b *builder) emitCallArgs(fn *Function, sig *types.Signature, e *... method setCall (line 1063) | func (b *builder) setCall(fn *Function, e *ast.CallExpr, c *CallCommon) { method assignOp (line 1076) | func (b *builder) assignOp(fn *Function, loc lvalue, val Value, op tok... method localValueSpec (line 1082) | func (b *builder) localValueSpec(fn *Function, spec *ast.ValueSpec) { method assignStmt (line 1124) | func (b *builder) assignStmt(fn *Function, lhss, rhss []ast.Expr, isDe... method arrayLen (line 1164) | func (b *builder) arrayLen(fn *Function, elts []ast.Expr) int64 { method compLit (line 1200) | func (b *builder) compLit(fn *Function, addr Value, e *ast.CompositeLi... method switchStmt (line 1392) | func (b *builder) switchStmt(fn *Function, s *ast.SwitchStmt, label *l... method switchStmtDynamic (line 1497) | func (b *builder) switchStmtDynamic(fn *Function, s *ast.SwitchStmt, l... method typeSwitchStmt (line 1604) | func (b *builder) typeSwitchStmt(fn *Function, s *ast.TypeSwitchStmt, ... method selectStmt (line 1758) | func (b *builder) selectStmt(fn *Function, s *ast.SelectStmt, label *l... method forStmt (line 1946) | func (b *builder) forStmt(fn *Function, s *ast.ForStmt, label *lblock) { method forStmtGo122 (line 2013) | func (b *builder) forStmtGo122(fn *Function, s *ast.ForStmt, label *lb... method rangeIndexed (line 2175) | func (b *builder) rangeIndexed(fn *Function, x Value, tv types.Type, s... method rangeIter (line 2274) | func (b *builder) rangeIter(fn *Function, x Value, tk, tv types.Type, ... method rangeChan (line 2340) | func (b *builder) rangeChan(fn *Function, x Value, tk types.Type, sour... method rangeInt (line 2373) | func (b *builder) rangeInt(fn *Function, x Value, tk types.Type, sourc... method rangeStmt (line 2449) | func (b *builder) rangeStmt(fn *Function, s *ast.RangeStmt, label *lbl... method rangeFunc (line 2558) | func (b *builder) rangeFunc(fn *Function, x Value, tk, tv types.Type, ... method buildYieldResume (line 2741) | func (b *builder) buildYieldResume(fn *Function, jump *types.Var, exit... method stmt (line 2835) | func (b *builder) stmt(fn *Function, _s ast.Stmt) { method branchStmt (line 2971) | func (b *builder) branchStmt(fn *Function, s *ast.BranchStmt) { method returnStmt (line 3006) | func (b *builder) returnStmt(fn *Function, s *ast.ReturnStmt) { method buildFunction (line 3072) | func (b *builder) buildFunction(fn *Function) { method buildYieldFunc (line 3148) | func (b *builder) buildYieldFunc(fn *Function) { method buildFuncDecl (line 3301) | func (b *builder) buildFuncDecl(pkg *Package, decl *ast.FuncDecl) { type store (line 472) | type store struct type storebuf (line 481) | type storebuf struct method store (line 483) | func (sb *storebuf) store(lhs lvalue, rhs Value, source ast.Node) { method storeDebugRef (line 487) | func (sb *storebuf) storeDebugRef(ref *DebugRef) { method emit (line 491) | func (sb *storebuf) emit(fn *Function) { type variable (line 2421) | type variable struct method store (line 2439) | func (v *variable) store(sv Value) { method load (line 2443) | func (v *variable) load() Value { function newVariable (line 2427) | func newVariable(fn *Function, typ types.Type, source ast.Node) *variable { function emitReturn (line 3062) | func emitReturn(fn *Function, results []Value, source ast.Node) { method Build (line 3320) | func (prog *Program) Build() { method Build (line 3333) | func (p *Package) Build() { p.buildOnce.Do(p.build) } method build (line 3335) | func (p *Package) build() { method objectOf (line 3442) | func (p *Package) objectOf(id *ast.Ident) types.Object { method typeOf (line 3452) | func (p *Package) typeOf(e ast.Expr) types.Type { FILE: go/ir/builder_test.go function isEmpty (line 27) | func isEmpty(f *ir.Function) bool { return f.Blocks == nil } function TestBuildPackage (line 31) | func TestBuildPackage(t *testing.T) { function TestRuntimeTypes (line 162) | func TestRuntimeTypes(t *testing.T) { function TestInit (line 252) | func TestInit(t *testing.T) { function TestSyntheticFuncs (line 318) | func TestSyntheticFuncs(t *testing.T) { function TestPhiElimination (line 418) | func TestPhiElimination(t *testing.T) { function TestBuildPackageGo120 (line 496) | func TestBuildPackageGo120(t *testing.T) { function TestGo117Builtins (line 578) | func TestGo117Builtins(t *testing.T) { function TestLabels (line 609) | func TestLabels(t *testing.T) { function TestUnreachableExit (line 635) | func TestUnreachableExit(t *testing.T) { FILE: go/ir/const.go function NewConst (line 23) | func NewConst(val constant.Value, typ types.Type, source ast.Node) *Const { function intConst (line 36) | func intConst(i int64, source ast.Node) *Const { function nilConst (line 42) | func nilConst(typ types.Type, source ast.Node) *Const { function stringConst (line 47) | func stringConst(s string, source ast.Node) *Const { function zeroConst (line 52) | func zeroConst(t types.Type, source ast.Node) Constant { method RelString (line 138) | func (c *Const) RelString(from *types.Package) string { method String (line 156) | func (c *Const) String() string { method RelString (line 165) | func (v *ArrayConst) RelString(pkg *types.Package) string { method String (line 169) | func (v *ArrayConst) String() string { method RelString (line 173) | func (v *AggregateConst) RelString(pkg *types.Package) string { method String (line 185) | func (v *AggregateConst) String() string { method RelString (line 192) | func (v *GenericConst) RelString(pkg *types.Package) string { method String (line 196) | func (v *GenericConst) String() string { method IsNil (line 201) | func (c *Const) IsNil() bool { method Int64 (line 207) | func (c *Const) Int64() int64 { method Uint64 (line 223) | func (c *Const) Uint64() uint64 { method Float64 (line 239) | func (c *Const) Float64() float64 { method Complex128 (line 246) | func (c *Const) Complex128() complex128 { method equal (line 252) | func (c *Const) equal(o Constant) bool { method equal (line 261) | func (c *AggregateConst) equal(o Constant) bool { method equal (line 281) | func (c *ArrayConst) equal(o Constant) bool { method equal (line 290) | func (c *GenericConst) equal(o Constant) bool { FILE: go/ir/create.go constant avgBlocks (line 25) | avgBlocks = 8 constant avgInstructionsPerBlock (line 26) | avgInstructionsPerBlock = 16 function NewProgram (line 31) | func NewProgram(fset *token.FileSet, mode BuilderMode) *Program { function memberFromObject (line 52) | func memberFromObject(pkg *Package, obj types.Object, syntax ast.Node, g... function membersFromDecl (line 135) | func membersFromDecl(pkg *Package, decl ast.Decl, goversion string) { method CreatePackage (line 187) | func (prog *Program) CreatePackage(pkg *types.Package, files []*ast.File... method AllPackages (line 273) | func (prog *Program) AllPackages() []*Package { method ImportedPackage (line 294) | func (prog *Program) ImportedPackage(path string) *Package { method SetNoReturn (line 298) | func (prog *Program) SetNoReturn(fn func(*types.Func) bool) { FILE: go/ir/dom.go method Idom (line 32) | func (b *BasicBlock) Idom() *BasicBlock { return b.dom.idom } method Dominees (line 36) | func (b *BasicBlock) Dominees() []*BasicBlock { return b.dom.children } method Dominates (line 39) | func (b *BasicBlock) Dominates(c *BasicBlock) bool { type byDomPreorder (line 43) | type byDomPreorder method Len (line 45) | func (a byDomPreorder) Len() int { return len(a) } method Swap (line 46) | func (a byDomPreorder) Swap(i, j int) { a[i], a[j] = a[j], a[i] } method Less (line 47) | func (a byDomPreorder) Less(i, j int) bool { return a[i].dom.pre < a[j... method DomPreorder (line 51) | func (f *Function) DomPreorder() []*BasicBlock { type domInfo (line 60) | type domInfo struct function buildDomTree (line 68) | func buildDomTree(fn *Function) { function buildPostDomTree (line 171) | func buildPostDomTree(fn *Function) { function numberDomTree (line 276) | func numberDomTree(v *BasicBlock, pre, post int32) (int32, int32) { function numberPostDomTree (line 290) | func numberPostDomTree(v *BasicBlock, pre, post int32) (int32, int32) { function sanityCheckDomTree (line 307) | func sanityCheckDomTree(f *Function) { function printDomTreeText (line 393) | func printDomTreeText(buf *bytes.Buffer, v *BasicBlock, indent int) { function printDomTreeDot (line 404) | func printDomTreeDot(buf io.Writer, f *Function) { function printPostDomTreeText (line 432) | func printPostDomTreeText(buf io.Writer, v *BasicBlock, indent int) { function printPostDomTreeDot (line 443) | func printPostDomTreeDot(buf io.Writer, f *Function) { FILE: go/ir/emit.go function emitAlloc (line 32) | func emitAlloc(f *Function, typ types.Type, source ast.Node, comment str... function emitNew (line 42) | func emitNew(f *Function, typ types.Type, source ast.Node, comment strin... function emitLocal (line 53) | func emitLocal(f *Function, t types.Type, source ast.Node, comment strin... function emitLocalVar (line 61) | func emitLocalVar(f *Function, v *types.Var, source ast.Node) *Alloc { function emitLoad (line 69) | func emitLoad(f *Function, addr Value, source ast.Node) *Load { function emitRecv (line 76) | func emitRecv(f *Function, ch Value, commaOk bool, typ types.Type, sourc... function emitDebugRef (line 87) | func emitDebugRef(f *Function, e ast.Expr, v Value, isAddr bool) { function makeDebugRef (line 95) | func makeDebugRef(f *Function, e ast.Expr, v Value, isAddr bool) *DebugR... function emitArith (line 126) | func emitArith(f *Function, op token.Token, x, y Value, t types.Type, so... function emitCompare (line 160) | func emitCompare(f *Function, op token.Token, x, y Value, source ast.Nod... function isValuePreserving (line 204) | func isValuePreserving(ut_src, ut_dst types.Type) bool { function emitConv (line 228) | func emitConv(f *Function, val Value, t_dst types.Type, source ast.Node)... function emitStore (line 399) | func emitStore(f *Function, addr, val Value, source ast.Node) *Store { function emitJump (line 410) | func emitJump(f *Function, target *BasicBlock, source ast.Node) *Jump { function emitIf (line 422) | func emitIf(f *Function, cond Value, tblock, fblock *BasicBlock, source ... function emitExtract (line 434) | func emitExtract(f *Function, tuple Value, index int, source ast.Node) V... function emitTypeAssert (line 442) | func emitTypeAssert(f *Function, x Value, t types.Type, source ast.Node)... function emitTypeTest (line 450) | func emitTypeTest(f *Function, x Value, t types.Type, source ast.Node) V... function emitTailCall (line 468) | func emitTailCall(f *Function, call *Call, source ast.Node) { function emitCall (line 501) | func emitCall(fn *Function, call *Call, source ast.Node) Value { function emitImplicitSelections (line 527) | func emitImplicitSelections(f *Function, v Value, indices []int, source ... function emitFieldSelection (line 563) | func emitFieldSelection(f *Function, v Value, index int, wantAddr bool, ... function zeroValue (line 596) | func zeroValue(f *Function, t types.Type, source ast.Node) Value { type constKey (line 600) | type constKey struct function emitConst (line 606) | func emitConst(f *Function, c Constant) Constant { FILE: go/ir/example_test.go constant hello (line 25) | hello = ` function Example_buildPackage (line 54) | func Example_buildPackage() { function Example_loadPackages (line 138) | func Example_loadPackages() { function Example_loadWholeProgram (line 168) | func Example_loadWholeProgram() { FILE: go/ir/func.go function addEdge (line 25) | func addEdge(from, to *BasicBlock) { method Control (line 31) | func (b *BasicBlock) Control() Instruction { method SigmaFor (line 39) | func (b *BasicBlock) SigmaFor(v Value, pred *BasicBlock) *Sigma { method Parent (line 54) | func (b *BasicBlock) Parent() *Function { return b.parent } method String (line 58) | func (b *BasicBlock) String() string { method emit (line 64) | func (b *BasicBlock) emit(i Instruction, source ast.Node) Value { method predIndex (line 74) | func (b *BasicBlock) predIndex(c *BasicBlock) int { method succIndex (line 84) | func (b *BasicBlock) succIndex(c *BasicBlock) int { method hasPhi (line 94) | func (b *BasicBlock) hasPhi() bool { method Phis (line 99) | func (b *BasicBlock) Phis() []Instruction { method phis (line 104) | func (b *BasicBlock) phis() []Instruction { method replacePred (line 115) | func (b *BasicBlock) replacePred(p, q *BasicBlock) { method replaceSucc (line 125) | func (b *BasicBlock) replaceSucc(p, q *BasicBlock) { method removePred (line 136) | func (b *BasicBlock) removePred(p *BasicBlock) { type targets (line 169) | type targets struct type lblock (line 181) | type lblock struct method label (line 192) | func (f *Function) label(label *ast.Ident) *types.Label { method lblockOf (line 198) | func (f *Function) lblockOf(label *types.Label) *lblock { function labelledBlock (line 218) | func labelledBlock(f *Function, label *types.Label, tok token.Token) *Ba... function targetedBlock (line 243) | func targetedBlock(f *Function, tok token.Token) *BasicBlock { method addResultVar (line 266) | func (f *Function) addResultVar(v *types.Var, source ast.Node) { method addParamVar (line 277) | func (f *Function) addParamVar(v *types.Var, source ast.Node) *Parameter { method addSpilledParam (line 301) | func (f *Function) addSpilledParam(obj *types.Var, source ast.Node) { method startBody (line 310) | func (f *Function) startBody() { method blockset (line 316) | func (f *Function) blockset(i int) *BlockSet { method exitBlock (line 331) | func (f *Function) exitBlock() { method createSyntacticParams (line 357) | func (f *Function) createSyntacticParams(recv *ast.FieldList, functype *... method createDeferStack (line 404) | func (fn *Function) createDeferStack() { function numberNodes (line 415) | func numberNodes(f *Function) { function updateOperandsReferrers (line 428) | func updateOperandsReferrers(instr Instruction, ops []*Value) { function buildReferrers (line 453) | func buildReferrers(f *Function) { method emitConsts (line 469) | func (f *Function) emitConsts() { function buildFakeExits (line 513) | func buildFakeExits(fn *Function) { method finishBody (line 573) | func (f *Function) finishBody() { function isUselessPhi (line 636) | func isUselessPhi(phi *Phi) (Value, bool) { method RemoveNilBlocks (line 659) | func (f *Function) RemoveNilBlocks() { method removeNilBlocks (line 665) | func (f *Function) removeNilBlocks() { method SetDebugMode (line 685) | func (pkg *Package) SetDebugMode(debug bool) { method debugInfo (line 691) | func (f *Function) debugInfo() bool { method lookup (line 701) | func (f *Function) lookup(obj *types.Var, escaping bool) Value { method emit (line 736) | func (f *Function) emit(instr Instruction, source ast.Node) Value { method RelString (line 763) | func (f *Function) RelString(from *types.Package) string { method relMethod (line 803) | func (f *Function) relMethod(from *types.Package, recv types.Type) string { function writeSignature (line 808) | func writeSignature(buf *bytes.Buffer, from *types.Package, name string,... method pkg (line 823) | func (f *Function) pkg() *types.Package { method WriteTo (line 832) | func (f *Function) WriteTo(w io.Writer) (int64, error) { function WriteFunction (line 840) | func WriteFunction(buf *bytes.Buffer, f *Function) { method newBasicBlock (line 950) | func (f *Function) newBasicBlock(comment string) *BasicBlock { method NewFunction (line 984) | func (prog *Program) NewFunction(name string, sig *types.Signature, prov... type extentNode (line 989) | type extentNode method Pos (line 991) | func (n extentNode) Pos() token.Pos { return n[0] } method End (line 992) | func (n extentNode) End() token.Pos { return n[1] } method initHTML (line 994) | func (f *Function) initHTML(name string) { function killInstruction (line 1003) | func killInstruction(instr Instruction) { function identVar (line 1013) | func identVar(fn *Function, id *ast.Ident) *types.Var { function unique (line 1020) | func unique(f *Function) int64 { type exit (line 1038) | type exit struct function storeVar (line 1050) | func storeVar(f *Function, x *types.Var, v Value, source ast.Node) { function labelExit (line 1055) | func labelExit(fn *Function, label *types.Label, source ast.Node) *exit { function blockExit (line 1068) | func blockExit(fn *Function, block *BasicBlock, source ast.Node) *exit { function returnExit (line 1081) | func returnExit(fn *Function, source ast.Node) *exit { FILE: go/ir/html.go function live (line 21) | func live(f *Function) []bool { type funcPrinter (line 62) | type funcPrinter interface function namedValues (line 71) | func namedValues(f *Function) map[types.Object][]Value { function fprintFunc (line 86) | func fprintFunc(p funcPrinter, f *Function) { function opName (line 118) | func opName(v Node) string { type HTMLWriter (line 140) | type HTMLWriter struct method start (line 161) | func (w *HTMLWriter) start(name string) { method Close (line 743) | func (w *HTMLWriter) Close() { method WriteFunc (line 757) | func (w *HTMLWriter) WriteFunc(phase, title string, f *Function) { method WriteColumn (line 766) | func (w *HTMLWriter) WriteColumn(phase, title, class, html string) { method Printf (line 784) | func (w *HTMLWriter) Printf(msg string, v ...any) { method WriteString (line 790) | func (w *HTMLWriter) WriteString(s string) { function NewHTMLWriter (line 146) | func NewHTMLWriter(path string, funcname, cfgMask string) *HTMLWriter { function valueHTML (line 796) | func valueHTML(v Node) string { function valueLongHTML (line 816) | func valueLongHTML(v Node) string { function blockHTML (line 905) | func blockHTML(b *BasicBlock) string { function blockLongHTML (line 913) | func blockLongHTML(b *BasicBlock) string { function funcHTML (line 943) | func funcHTML(f *Function, phase string, dot *dotWriter) string { type htmlFuncPrinter (line 957) | type htmlFuncPrinter struct method startBlock (line 961) | func (p htmlFuncPrinter) startBlock(b *BasicBlock, reachable bool) { method endBlock (line 984) | func (p htmlFuncPrinter) endBlock(b *BasicBlock) { method value (line 995) | func (p htmlFuncPrinter) value(v Node, live bool) { method startDepCycle (line 1005) | func (p htmlFuncPrinter) startDepCycle() { method endDepCycle (line 1009) | func (p htmlFuncPrinter) endDepCycle() { method named (line 1013) | func (p htmlFuncPrinter) named(n string, vals []Value) { type dotWriter (line 1021) | type dotWriter struct method writeFuncSVG (line 1041) | func (d *dotWriter) writeFuncSVG(w io.Writer, phase string, f *Functio... method copyUntil (line 1119) | func (d *dotWriter) copyUntil(w io.Writer, buf *bytes.Buffer, sep stri... function newDotWriter (line 1032) | func newDotWriter() *dotWriter { FILE: go/ir/irutil/load.go type Options (line 21) | type Options struct function Packages (line 43) | func Packages(initial []*packages.Package, mode ir.BuilderMode, opts *Op... function AllPackages (line 64) | func AllPackages(initial []*packages.Package, mode ir.BuilderMode, opts ... function doPackages (line 68) | func doPackages(initial []*packages.Package, mode ir.BuilderMode, deps b... function CreateProgram (line 114) | func CreateProgram(lprog *loader.Program, mode ir.BuilderMode) *ir.Progr... function BuildPackage (line 140) | func BuildPackage(tc *types.Config, fset *token.FileSet, pkg *types.Pack... FILE: go/ir/irutil/load_test.go constant hello (line 23) | hello = `package main function TestBuildPackage (line 32) | func TestBuildPackage(t *testing.T) { function TestPackages (line 56) | func TestPackages(t *testing.T) { function TestBuildPackage_MissingImport (line 101) | func TestBuildPackage_MissingImport(t *testing.T) { function TestIssue28106 (line 115) | func TestIssue28106(t *testing.T) { FILE: go/ir/irutil/loops.go type Loop (line 5) | type Loop struct function FindLoops (line 7) | func FindLoops(fn *ir.Function) []Loop { function allPredsBut (line 38) | func allPredsBut(b, but *ir.BasicBlock, list []*ir.BasicBlock) []*ir.Bas... FILE: go/ir/irutil/stub.go function IsStub (line 10) | func IsStub(fn *ir.Function) bool { FILE: go/ir/irutil/switch.go type ConstCase (line 32) | type ConstCase struct type TypeCase (line 40) | type TypeCase struct type Switch (line 58) | type Switch struct method String (line 66) | func (sw *Switch) String() string { function Switches (line 105) | func Switches(fn *ir.Function) []Switch { function isSameX (line 132) | func isSameX(x1 ir.Value, x2 ir.Value) bool { function valueSwitch (line 142) | func valueSwitch(sw *Switch, k *ir.Const, seen map[*ir.BasicBlock]bool) { function typeSwitch (line 183) | func typeSwitch(sw *Switch, y ir.Value, T types.Type, seen map[*ir.Basic... function isComparisonBlock (line 228) | func isComparisonBlock(b *ir.BasicBlock) (v ir.Value, k *ir.Const) { function isTypeAssertBlock (line 246) | func isTypeAssertBlock(b *ir.BasicBlock) (y, x ir.Value, T types.Type) { FILE: go/ir/irutil/switch_test.go function TestSwitches (line 26) | func TestSwitches(t *testing.T) { method testString (line 81) | func (sw *Switch) testString() string { FILE: go/ir/irutil/terminates.go function Terminates (line 12) | func Terminates(fn *ir.Function) bool { FILE: go/ir/irutil/testdata/switches.go function four (line 16) | func four() int { return 4 } function SwitchWithNonConstantCase (line 20) | func SwitchWithNonConstantCase(x int) { function ImplicitSwitches (line 51) | func ImplicitSwitches(x, y int) { function IfElseBasedSwitch (line 81) | func IfElseBasedSwitch(x int) { function GotoBasedSwitch (line 96) | func GotoBasedSwitch(x int) { function SwitchInAForLoop (line 117) | func SwitchInAForLoop(x, y int) { function SwitchInAForLoopUsingGoto (line 143) | func SwitchInAForLoopUsingGoto(x int) { function UnstructuredSwitchInAForLoop (line 166) | func UnstructuredSwitchInAForLoop(x int) { function CaseWithMultiplePreds (line 185) | func CaseWithMultiplePreds(x int) { function DuplicateConstantsAreNotEliminated (line 202) | func DuplicateConstantsAreNotEliminated(x int) { function MakeInterfaceIsNotAConstant (line 220) | func MakeInterfaceIsNotAConstant(x interface{}) { function ZeroInitializedVarsAreConstants (line 228) | func ZeroInitializedVarsAreConstants(x int) { function AdHocTypeSwitch (line 246) | func AdHocTypeSwitch(x interface{}) { FILE: go/ir/irutil/util.go function Reachable (line 12) | func Reachable(from, to *ir.BasicBlock) bool { function Walk (line 31) | func Walk(b *ir.BasicBlock, fn func(*ir.BasicBlock) bool) { function Vararg (line 48) | func Vararg(x *ir.Slice) ([]ir.Value, bool) { function CallName (line 90) | func CallName(call *ir.CallCommon) string { function IsCallTo (line 107) | func IsCallTo(call *ir.CallCommon, name string) bool { return CallName(c... function IsCallToAny (line 109) | func IsCallToAny(call *ir.CallCommon, names ...string) bool { function FilterDebug (line 114) | func FilterDebug(instr []ir.Instruction) []ir.Instruction { function IsExample (line 124) | func IsExample(fn *ir.Function) bool { function Flatten (line 139) | func Flatten(v ir.Value) ir.Value { FILE: go/ir/irutil/visit.go function AllFunctions (line 21) | func AllFunctions(prog *ir.Program) map[*ir.Function]bool { type visitor (line 30) | type visitor struct method program (line 35) | func (visit *visitor) program() { method function (line 51) | func (visit *visitor) function(fn *ir.Function) { function MainPackages (line 70) | func MainPackages(pkgs []*ir.Package) []*ir.Package { FILE: go/ir/lift.go constant debugLifting (line 54) | debugLifting = false type domFrontier (line 67) | type domFrontier method add (line 69) | func (df domFrontier) add(u, v *BasicBlock) { method build (line 80) | func (df domFrontier) build(fn *Function) { function buildDomFrontier (line 102) | func buildDomFrontier(fn *Function) domFrontier { type postDomFrontier (line 108) | type postDomFrontier method add (line 110) | func (rdf postDomFrontier) add(u, v *BasicBlock) { method build (line 114) | func (rdf postDomFrontier) build(fn *Function) { function buildPostDomFrontier (line 132) | func buildPostDomFrontier(fn *Function) postDomFrontier { function removeInstr (line 138) | func removeInstr(refs []Instruction, instr Instruction) []Instruction { function removeInstrsIf (line 142) | func removeInstrsIf(refs []Instruction, p func(Instruction) bool) []Inst... function clearInstrs (line 146) | func clearInstrs(instrs []Instruction) { function numberNodesPerBlock (line 152) | func numberNodesPerBlock(f *Function) { function lift (line 173) | func lift(fn *Function) bool { function hasDirectReferrer (line 459) | func hasDirectReferrer(instr Instruction) bool { function markLiveNodes (line 471) | func markLiveNodes(blocks []*BasicBlock, newPhis BlockMap[[]newPhi], new... function markLivePhi (line 504) | func markLivePhi(phi *Phi) { function markLiveSigma (line 520) | func markLiveSigma(sigma *Sigma) { function simplifyPhisAndSigmas (line 538) | func simplifyPhisAndSigmas(newPhis BlockMap[[]newPhi], newSigmas BlockMa... type BlockSet (line 651) | type BlockSet struct method Set (line 661) | func (s *BlockSet) Set(s2 *BlockSet) { method Num (line 671) | func (s *BlockSet) Num() int { method Has (line 675) | func (s *BlockSet) Has(b *BasicBlock) bool { method Add (line 683) | func (s *BlockSet) Add(b *BasicBlock) bool { method Clear (line 694) | func (s *BlockSet) Clear() { method Take (line 703) | func (s *BlockSet) Take() int { function NewBlockSet (line 657) | func NewBlockSet(size int) *BlockSet { type closure (line 727) | type closure struct method has (line 742) | func (c closure) has(s, v *BasicBlock) bool { method reachable (line 768) | func (c closure) reachable(id int) []interval { method walk (line 772) | func (c closure) walk(current *BasicBlock, b *BasicBlock, visited []bo... type interval (line 732) | type interval constant flagMask (line 735) | flagMask = 1 << 31 constant numBits (line 736) | numBits = 20 constant lengthBits (line 737) | lengthBits = 32 - numBits - 1 constant lengthMask (line 738) | lengthMask = (1<