github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/compile/inline/inlheur/funcprop_string.go (about) 1 // Copyright 2023 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 package inlheur 6 7 import ( 8 "fmt" 9 "strings" 10 ) 11 12 func (fp *FuncProps) String() string { 13 return fp.ToString("") 14 } 15 16 func (fp *FuncProps) ToString(prefix string) string { 17 var sb strings.Builder 18 if fp.Flags != 0 { 19 fmt.Fprintf(&sb, "%sFlags %s\n", prefix, fp.Flags) 20 } 21 flagSliceToSB[ParamPropBits](&sb, fp.ParamFlags, 22 prefix, "ParamFlags") 23 flagSliceToSB[ResultPropBits](&sb, fp.ResultFlags, 24 prefix, "ResultFlags") 25 return sb.String() 26 } 27 28 func flagSliceToSB[T interface { 29 ~uint32 30 String() string 31 }](sb *strings.Builder, sl []T, prefix string, tag string) { 32 var sb2 strings.Builder 33 foundnz := false 34 fmt.Fprintf(&sb2, "%s%s\n", prefix, tag) 35 for i, e := range sl { 36 if e != 0 { 37 foundnz = true 38 } 39 fmt.Fprintf(&sb2, "%s %d %s\n", prefix, i, e.String()) 40 } 41 if foundnz { 42 sb.WriteString(sb2.String()) 43 } 44 }