mirror of
https://github.com/golang/go
synced 2024-10-04 15:09:59 +00:00
cmd/compile/internal/inline: refactor heuristics analyzers
This very minor refactoring changes the heuristics analysis code to avoid running result-flag or param-flag analyzers on functions that don't have any interesting results or parameters (so as to save a bit of compile time). No change otherwise in heuristics functionality. Change-Id: I7ee13f0499cc3d14d5638e2193e4bd8d7b690e5b Reviewed-on: https://go-review.googlesource.com/c/go/+/537976 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
322cd4e807
commit
d21afcdf00
|
@ -113,11 +113,11 @@ func computeFuncProps(fn *ir.Func, canInline func(*ir.Func), inlineMaxBudget int
|
||||||
fmt.Fprintf(os.Stderr, "=-= starting analysis of func %v:\n%+v\n",
|
fmt.Fprintf(os.Stderr, "=-= starting analysis of func %v:\n%+v\n",
|
||||||
fn, fn)
|
fn, fn)
|
||||||
}
|
}
|
||||||
ra := makeResultsAnalyzer(fn, canInline, inlineMaxBudget)
|
|
||||||
pa := makeParamsAnalyzer(fn)
|
|
||||||
ffa := makeFuncFlagsAnalyzer(fn)
|
|
||||||
analyzers := []propAnalyzer{ffa, ra, pa}
|
|
||||||
funcProps := new(FuncProps)
|
funcProps := new(FuncProps)
|
||||||
|
ffa := makeFuncFlagsAnalyzer(fn)
|
||||||
|
analyzers := []propAnalyzer{ffa}
|
||||||
|
analyzers = addResultsAnalyzer(fn, canInline, inlineMaxBudget, analyzers, funcProps)
|
||||||
|
analyzers = addParamsAnalyzer(fn, analyzers, funcProps)
|
||||||
runAnalyzersOnFunction(fn, analyzers)
|
runAnalyzersOnFunction(fn, analyzers)
|
||||||
for _, a := range analyzers {
|
for _, a := range analyzers {
|
||||||
a.setResults(funcProps)
|
a.setResults(funcProps)
|
||||||
|
|
|
@ -29,10 +29,33 @@ func getParams(fn *ir.Func) []*ir.Name {
|
||||||
return fn.Dcl[:numParams]
|
return fn.Dcl[:numParams]
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeParamsAnalyzer(fn *ir.Func) *paramsAnalyzer {
|
// addParamsAnalyzer creates a new paramsAnalyzer helper object for
|
||||||
|
// the function fn, appends it to the analyzers list, and returns the
|
||||||
|
// new list. If the function in question doesn't have any interesting
|
||||||
|
// parameters then the analyzer list is returned unchanged, and the
|
||||||
|
// params flags in "fp" are updated accordingly.
|
||||||
|
func addParamsAnalyzer(fn *ir.Func, analyzers []propAnalyzer, fp *FuncProps) []propAnalyzer {
|
||||||
|
pa, props := makeParamsAnalyzer(fn)
|
||||||
|
if pa != nil {
|
||||||
|
analyzers = append(analyzers, pa)
|
||||||
|
} else {
|
||||||
|
fp.ParamFlags = props
|
||||||
|
}
|
||||||
|
return analyzers
|
||||||
|
}
|
||||||
|
|
||||||
|
// makeParamAnalyzer creates a new helper object to analyze parameters
|
||||||
|
// of function fn. If the function doesn't have any interesting
|
||||||
|
// params, a nil helper is returned along with a set of default param
|
||||||
|
// flags for the func.
|
||||||
|
func makeParamsAnalyzer(fn *ir.Func) (*paramsAnalyzer, []ParamPropBits) {
|
||||||
params := getParams(fn) // includes receiver if applicable
|
params := getParams(fn) // includes receiver if applicable
|
||||||
|
if len(params) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
vals := make([]ParamPropBits, len(params))
|
vals := make([]ParamPropBits, len(params))
|
||||||
top := make([]bool, len(params))
|
top := make([]bool, len(params))
|
||||||
|
interestingToAnalyze := false
|
||||||
for i, pn := range params {
|
for i, pn := range params {
|
||||||
if pn == nil {
|
if pn == nil {
|
||||||
continue
|
continue
|
||||||
|
@ -48,6 +71,7 @@ func makeParamsAnalyzer(fn *ir.Func) *paramsAnalyzer {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
top[i] = true
|
top[i] = true
|
||||||
|
interestingToAnalyze = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if debugTrace&debugTraceParams != 0 {
|
if debugTrace&debugTraceParams != 0 {
|
||||||
|
@ -63,13 +87,18 @@ func makeParamsAnalyzer(fn *ir.Func) *paramsAnalyzer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ¶msAnalyzer{
|
if !interestingToAnalyze {
|
||||||
|
return nil, vals
|
||||||
|
}
|
||||||
|
|
||||||
|
pa := ¶msAnalyzer{
|
||||||
fname: fn.Sym().Name,
|
fname: fn.Sym().Name,
|
||||||
values: vals,
|
values: vals,
|
||||||
params: params,
|
params: params,
|
||||||
top: top,
|
top: top,
|
||||||
condLevelTracker: new(condLevelTracker),
|
condLevelTracker: new(condLevelTracker),
|
||||||
}
|
}
|
||||||
|
return pa, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pa *paramsAnalyzer) setResults(funcProps *FuncProps) {
|
func (pa *paramsAnalyzer) setResults(funcProps *FuncProps) {
|
||||||
|
|
|
@ -12,10 +12,10 @@ import (
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
// returnsAnalyzer stores state information for the process of
|
// resultsAnalyzer stores state information for the process of
|
||||||
// computing flags/properties for the return values of a specific Go
|
// computing flags/properties for the return values of a specific Go
|
||||||
// function, as part of inline heuristics synthesis.
|
// function, as part of inline heuristics synthesis.
|
||||||
type returnsAnalyzer struct {
|
type resultsAnalyzer struct {
|
||||||
fname string
|
fname string
|
||||||
props []ResultPropBits
|
props []ResultPropBits
|
||||||
values []resultVal
|
values []resultVal
|
||||||
|
@ -36,38 +36,66 @@ type resultVal struct {
|
||||||
derived bool // see deriveReturnFlagsFromCallee below
|
derived bool // see deriveReturnFlagsFromCallee below
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeResultsAnalyzer(fn *ir.Func, canInline func(*ir.Func), inlineMaxBudget int32) *returnsAnalyzer {
|
// addResultsAnalyzer creates a new resultsAnalyzer helper object for
|
||||||
|
// the function fn, appends it to the analyzers list, and returns the
|
||||||
|
// new list. If the function in question doesn't have any returns (or
|
||||||
|
// any interesting returns) then the analyzer list is left as is, and
|
||||||
|
// the result flags in "fp" are updated accordingly.
|
||||||
|
func addResultsAnalyzer(fn *ir.Func, canInline func(*ir.Func), inlineMaxBudget int32, analyzers []propAnalyzer, fp *FuncProps) []propAnalyzer {
|
||||||
|
ra, props := makeResultsAnalyzer(fn, canInline, inlineMaxBudget)
|
||||||
|
if ra != nil {
|
||||||
|
analyzers = append(analyzers, ra)
|
||||||
|
} else {
|
||||||
|
fp.ResultFlags = props
|
||||||
|
}
|
||||||
|
return analyzers
|
||||||
|
}
|
||||||
|
|
||||||
|
// makeResultsAnalyzer creates a new helper object to analyze results
|
||||||
|
// in function fn. If the function doesn't have any interesting
|
||||||
|
// results, a nil helper is returned along with a set of default
|
||||||
|
// result flags for the func.
|
||||||
|
func makeResultsAnalyzer(fn *ir.Func, canInline func(*ir.Func), inlineMaxBudget int32) (*resultsAnalyzer, []ResultPropBits) {
|
||||||
results := fn.Type().Results()
|
results := fn.Type().Results()
|
||||||
|
if len(results) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
props := make([]ResultPropBits, len(results))
|
props := make([]ResultPropBits, len(results))
|
||||||
vals := make([]resultVal, len(results))
|
vals := make([]resultVal, len(results))
|
||||||
|
interestingToAnalyze := false
|
||||||
for i := range results {
|
for i := range results {
|
||||||
rt := results[i].Type
|
rt := results[i].Type
|
||||||
if !rt.IsScalar() && !rt.HasNil() {
|
if !rt.IsScalar() && !rt.HasNil() {
|
||||||
// existing properties not applicable here (for things
|
// existing properties not applicable here (for things
|
||||||
// like structs, arrays, slices, etc).
|
// like structs, arrays, slices, etc).
|
||||||
props[i] = ResultNoInfo
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// set the "top" flag (as in "top element of data flow lattice")
|
// set the "top" flag (as in "top element of data flow lattice")
|
||||||
// meaning "we have no info yet, but we might later on".
|
// meaning "we have no info yet, but we might later on".
|
||||||
vals[i].top = true
|
vals[i].top = true
|
||||||
|
interestingToAnalyze = true
|
||||||
}
|
}
|
||||||
return &returnsAnalyzer{
|
if !interestingToAnalyze {
|
||||||
|
return nil, props
|
||||||
|
}
|
||||||
|
|
||||||
|
ra := &resultsAnalyzer{
|
||||||
props: props,
|
props: props,
|
||||||
values: vals,
|
values: vals,
|
||||||
canInline: canInline,
|
canInline: canInline,
|
||||||
inlineMaxBudget: inlineMaxBudget,
|
inlineMaxBudget: inlineMaxBudget,
|
||||||
}
|
}
|
||||||
|
return ra, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// setResults transfers the calculated result properties for this
|
// setResults transfers the calculated result properties for this
|
||||||
// function to 'funcProps'.
|
// function to 'funcProps'.
|
||||||
func (ra *returnsAnalyzer) setResults(funcProps *FuncProps) {
|
func (ra *resultsAnalyzer) setResults(funcProps *FuncProps) {
|
||||||
// Promote ResultAlwaysSameFunc to ResultAlwaysSameInlinableFunc
|
// Promote ResultAlwaysSameFunc to ResultAlwaysSameInlinableFunc
|
||||||
for i := range ra.values {
|
for i := range ra.values {
|
||||||
if ra.props[i] == ResultAlwaysSameFunc && !ra.values[i].derived {
|
if ra.props[i] == ResultAlwaysSameFunc && !ra.values[i].derived {
|
||||||
f := ra.values[i].fn.Func
|
f := ra.values[i].fn.Func
|
||||||
// If the function being returns is a closure that hasn't
|
// If the function being returned is a closure that hasn't
|
||||||
// yet been checked by CanInline, invoke it now. NB: this
|
// yet been checked by CanInline, invoke it now. NB: this
|
||||||
// is hacky, it would be better if things were structured
|
// is hacky, it would be better if things were structured
|
||||||
// so that all closures were visited ahead of time.
|
// so that all closures were visited ahead of time.
|
||||||
|
@ -78,11 +106,11 @@ func (ra *returnsAnalyzer) setResults(funcProps *FuncProps) {
|
||||||
}
|
}
|
||||||
// HACK: in order to allow for call site score
|
// HACK: in order to allow for call site score
|
||||||
// adjustments, we used a relaxed inline budget in
|
// adjustments, we used a relaxed inline budget in
|
||||||
// determining inlinability. Here what we want to know is
|
// determining inlinability. For the check below, however,
|
||||||
// whether the func in question is likely to be inlined,
|
// we want to know is whether the func in question is
|
||||||
// as opposed to whether it might possibly be inlined if
|
// likely to be inlined, as opposed to whether it might
|
||||||
// all the right score adjustments happened, so check the
|
// possibly be inlined if all the right score adjustments
|
||||||
// cost here as well.
|
// happened, so do a simple check based on the cost.
|
||||||
if f.Inl != nil && f.Inl.Cost <= ra.inlineMaxBudget {
|
if f.Inl != nil && f.Inl.Cost <= ra.inlineMaxBudget {
|
||||||
ra.props[i] = ResultAlwaysSameInlinableFunc
|
ra.props[i] = ResultAlwaysSameInlinableFunc
|
||||||
}
|
}
|
||||||
|
@ -91,16 +119,16 @@ func (ra *returnsAnalyzer) setResults(funcProps *FuncProps) {
|
||||||
funcProps.ResultFlags = ra.props
|
funcProps.ResultFlags = ra.props
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ra *returnsAnalyzer) pessimize() {
|
func (ra *resultsAnalyzer) pessimize() {
|
||||||
for i := range ra.props {
|
for i := range ra.props {
|
||||||
ra.props[i] = ResultNoInfo
|
ra.props[i] = ResultNoInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ra *returnsAnalyzer) nodeVisitPre(n ir.Node) {
|
func (ra *resultsAnalyzer) nodeVisitPre(n ir.Node) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ra *returnsAnalyzer) nodeVisitPost(n ir.Node) {
|
func (ra *resultsAnalyzer) nodeVisitPost(n ir.Node) {
|
||||||
if len(ra.values) == 0 {
|
if len(ra.values) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -153,7 +181,7 @@ func isFuncName(n ir.Node) (*ir.Name, bool, bool) {
|
||||||
// applies a dataflow "meet" operation to combine this result with any
|
// applies a dataflow "meet" operation to combine this result with any
|
||||||
// previous result (for the given return slot) that we've already
|
// previous result (for the given return slot) that we've already
|
||||||
// processed.
|
// processed.
|
||||||
func (ra *returnsAnalyzer) analyzeResult(ii int, n ir.Node) {
|
func (ra *resultsAnalyzer) analyzeResult(ii int, n ir.Node) {
|
||||||
isAllocMem := isAllocatedMem(n)
|
isAllocMem := isAllocatedMem(n)
|
||||||
isConcConvItf := isConcreteConvIface(n)
|
isConcConvItf := isConcreteConvIface(n)
|
||||||
lit, isConst := isLiteral(n)
|
lit, isConst := isLiteral(n)
|
||||||
|
|
|
@ -12,7 +12,7 @@ package params
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIndirectCall
|
// 0 ParamFeedsIndirectCall
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[8],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[8],"ResultFlags":null}
|
||||||
// callsite: acrosscall.go:20:12|0 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
// callsite: acrosscall.go:20:12|0 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -24,7 +24,7 @@ func T_feeds_indirect_call_via_call_toplevel(f func(int)) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamMayFeedIndirectCall
|
// 0 ParamMayFeedIndirectCall
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[16],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[16],"ResultFlags":null}
|
||||||
// callsite: acrosscall.go:33:13|0 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
// callsite: acrosscall.go:33:13|0 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -38,7 +38,7 @@ func T_feeds_indirect_call_via_call_conditional(f func(int)) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamMayFeedIndirectCall
|
// 0 ParamMayFeedIndirectCall
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[16],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[16],"ResultFlags":null}
|
||||||
// callsite: acrosscall.go:46:23|0 flagstr "" flagval 0 score 64 mask 0 maskstr ""
|
// callsite: acrosscall.go:46:23|0 flagstr "" flagval 0 score 64 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -50,7 +50,7 @@ func T_feeds_conditional_indirect_call_via_call_toplevel(f func(int)) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// callsite: acrosscall.go:58:9|0 flagstr "" flagval 0 score 8 mask 0 maskstr ""
|
// callsite: acrosscall.go:58:9|0 flagstr "" flagval 0 score 8 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -62,7 +62,7 @@ func T_feeds_if_via_call(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamMayFeedIfOrSwitch
|
// 0 ParamMayFeedIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[64],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[64],"ResultFlags":null}
|
||||||
// callsite: acrosscall.go:71:10|0 flagstr "" flagval 0 score 8 mask 0 maskstr ""
|
// callsite: acrosscall.go:71:10|0 flagstr "" flagval 0 score 8 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -76,7 +76,7 @@ func T_feeds_if_via_call_conditional(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamMayFeedIfOrSwitch
|
// 0 ParamMayFeedIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[64],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[64],"ResultFlags":null}
|
||||||
// callsite: acrosscall.go:84:20|0 flagstr "" flagval 0 score 12 mask 0 maskstr ""
|
// callsite: acrosscall.go:84:20|0 flagstr "" flagval 0 score 12 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -89,7 +89,7 @@ func T_feeds_conditional_if_via_call(x int) {
|
||||||
// 0 ParamFeedsIndirectCall|ParamMayFeedIndirectCall
|
// 0 ParamFeedsIndirectCall|ParamMayFeedIndirectCall
|
||||||
// 1 ParamFeedsIndirectCall
|
// 1 ParamFeedsIndirectCall
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[24,8],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[24,8],"ResultFlags":null}
|
||||||
// callsite: acrosscall.go:100:23|1 flagstr "" flagval 0 score 64 mask 0 maskstr ""
|
// callsite: acrosscall.go:100:23|1 flagstr "" flagval 0 score 64 mask 0 maskstr ""
|
||||||
// callsite: acrosscall.go:101:12|2 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
// callsite: acrosscall.go:101:12|2 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
||||||
// callsite: acrosscall.go:99:12|0 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
// callsite: acrosscall.go:99:12|0 flagstr "" flagval 0 score 60 mask 0 maskstr ""
|
||||||
|
@ -105,7 +105,7 @@ func T_multifeeds(f1, f2 func(int)) {
|
||||||
// ResultFlags
|
// ResultFlags
|
||||||
// 0 ResultAlwaysSameConstant
|
// 0 ResultAlwaysSameConstant
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[8]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[8]}
|
||||||
// callsite: acrosscall.go:113:24|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
// callsite: acrosscall.go:113:24|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -117,7 +117,7 @@ func T_acrosscall_returnsconstant() int {
|
||||||
// ResultFlags
|
// ResultFlags
|
||||||
// 0 ResultIsAllocatedMem
|
// 0 ResultIsAllocatedMem
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[2]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[2]}
|
||||||
// callsite: acrosscall.go:125:19|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
// callsite: acrosscall.go:125:19|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -129,7 +129,7 @@ func T_acrosscall_returnsmem() *int {
|
||||||
// ResultFlags
|
// ResultFlags
|
||||||
// 0 ResultIsConcreteTypeConvertedToInterface
|
// 0 ResultIsConcreteTypeConvertedToInterface
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[4]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[4]}
|
||||||
// callsite: acrosscall.go:137:19|0 flagstr "" flagval 0 score 7 mask 0 maskstr ""
|
// callsite: acrosscall.go:137:19|0 flagstr "" flagval 0 score 7 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
|
|
@ -12,7 +12,7 @@ import "os"
|
||||||
|
|
||||||
// calls.go T_call_in_panic_arg 19 0 1
|
// calls.go T_call_in_panic_arg 19 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// callsite: calls.go:21:15|0 flagstr "CallSiteOnPanicPath" flagval 2 score 42 mask 1 maskstr "panicPathAdj"
|
// callsite: calls.go:21:15|0 flagstr "CallSiteOnPanicPath" flagval 2 score 42 mask 1 maskstr "panicPathAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -24,7 +24,7 @@ func T_call_in_panic_arg(x int) {
|
||||||
|
|
||||||
// calls.go T_calls_in_loops 32 0 1
|
// calls.go T_calls_in_loops 32 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":null}
|
||||||
// callsite: calls.go:34:9|0 flagstr "CallSiteInLoop" flagval 1 score -3 mask 4 maskstr "inLoopAdj"
|
// callsite: calls.go:34:9|0 flagstr "CallSiteInLoop" flagval 1 score -3 mask 4 maskstr "inLoopAdj"
|
||||||
// callsite: calls.go:37:9|1 flagstr "CallSiteInLoop" flagval 1 score -3 mask 4 maskstr "inLoopAdj"
|
// callsite: calls.go:37:9|1 flagstr "CallSiteInLoop" flagval 1 score -3 mask 4 maskstr "inLoopAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
|
@ -40,7 +40,7 @@ func T_calls_in_loops(x int, q []string) {
|
||||||
|
|
||||||
// calls.go T_calls_in_pseudo_loop 48 0 1
|
// calls.go T_calls_in_pseudo_loop 48 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":null}
|
||||||
// callsite: calls.go:50:9|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
// callsite: calls.go:50:9|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
||||||
// callsite: calls.go:54:9|1 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
// callsite: calls.go:54:9|1 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
|
@ -58,7 +58,7 @@ func T_calls_in_pseudo_loop(x int, q []string) {
|
||||||
|
|
||||||
// calls.go T_calls_on_panic_paths 67 0 1
|
// calls.go T_calls_on_panic_paths 67 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":null}
|
||||||
// callsite: calls.go:69:9|0 flagstr "CallSiteOnPanicPath" flagval 2 score 42 mask 1 maskstr "panicPathAdj"
|
// callsite: calls.go:69:9|0 flagstr "CallSiteOnPanicPath" flagval 2 score 42 mask 1 maskstr "panicPathAdj"
|
||||||
// callsite: calls.go:73:9|1 flagstr "CallSiteOnPanicPath" flagval 2 score 42 mask 1 maskstr "panicPathAdj"
|
// callsite: calls.go:73:9|1 flagstr "CallSiteOnPanicPath" flagval 2 score 42 mask 1 maskstr "panicPathAdj"
|
||||||
// callsite: calls.go:77:12|2 flagstr "CallSiteOnPanicPath" flagval 2 score 102 mask 1 maskstr "panicPathAdj"
|
// callsite: calls.go:77:12|2 flagstr "CallSiteOnPanicPath" flagval 2 score 102 mask 1 maskstr "panicPathAdj"
|
||||||
|
@ -83,7 +83,7 @@ func T_calls_on_panic_paths(x int, q []string) {
|
||||||
// 0 ParamFeedsIfOrSwitch|ParamMayFeedIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch|ParamMayFeedIfOrSwitch
|
||||||
// 1 ParamNoInfo
|
// 1 ParamNoInfo
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[96,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[96,0],"ResultFlags":null}
|
||||||
// callsite: calls.go:103:9|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
// callsite: calls.go:103:9|0 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
||||||
// callsite: calls.go:112:9|1 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
// callsite: calls.go:112:9|1 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
||||||
// callsite: calls.go:115:9|2 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
// callsite: calls.go:115:9|2 flagstr "" flagval 0 score 2 mask 0 maskstr ""
|
||||||
|
@ -122,7 +122,7 @@ func T_calls_not_on_panic_paths(x int, q []string) {
|
||||||
|
|
||||||
// calls.go init.0 129 0 1
|
// calls.go init.0 129 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":null}
|
||||||
// callsite: calls.go:130:16|0 flagstr "CallSiteInInitFunc" flagval 4 score 22 mask 2 maskstr "initFuncAdj"
|
// callsite: calls.go:130:16|0 flagstr "CallSiteInInitFunc" flagval 4 score 22 mask 2 maskstr "initFuncAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
|
|
@ -14,7 +14,7 @@ import "os"
|
||||||
// funcflags.go T_simple 20 0 1
|
// funcflags.go T_simple 20 0 1
|
||||||
// Flags FuncPropNeverReturns
|
// Flags FuncPropNeverReturns
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":null,"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_simple() {
|
func T_simple() {
|
||||||
|
@ -26,7 +26,7 @@ func T_simple() {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_nested(x int) {
|
func T_nested(x int) {
|
||||||
|
@ -40,7 +40,7 @@ func T_nested(x int) {
|
||||||
// funcflags.go T_block1 46 0 1
|
// funcflags.go T_block1 46 0 1
|
||||||
// Flags FuncPropNeverReturns
|
// Flags FuncPropNeverReturns
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_block1(x int) {
|
func T_block1(x int) {
|
||||||
|
@ -54,7 +54,7 @@ func T_block1(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_block2(x int) {
|
func T_block2(x int) {
|
||||||
|
@ -69,7 +69,7 @@ func T_block2(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_switches1(x int) {
|
func T_switches1(x int) {
|
||||||
|
@ -86,7 +86,7 @@ func T_switches1(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_switches1a(x int) {
|
func T_switches1a(x int) {
|
||||||
|
@ -100,7 +100,7 @@ func T_switches1a(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_switches2(x int) {
|
func T_switches2(x int) {
|
||||||
|
@ -117,7 +117,7 @@ func T_switches2(x int) {
|
||||||
|
|
||||||
// funcflags.go T_switches3 123 0 1
|
// funcflags.go T_switches3 123 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_switches3(x interface{}) {
|
func T_switches3(x interface{}) {
|
||||||
|
@ -132,7 +132,7 @@ func T_switches3(x interface{}) {
|
||||||
// funcflags.go T_switches4 138 0 1
|
// funcflags.go T_switches4 138 0 1
|
||||||
// Flags FuncPropNeverReturns
|
// Flags FuncPropNeverReturns
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_switches4(x int) {
|
func T_switches4(x int) {
|
||||||
|
@ -151,7 +151,7 @@ func T_switches4(x int) {
|
||||||
|
|
||||||
// funcflags.go T_recov 157 0 1
|
// funcflags.go T_recov 157 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_recov(x int) {
|
func T_recov(x int) {
|
||||||
|
@ -163,7 +163,7 @@ func T_recov(x int) {
|
||||||
// funcflags.go T_forloops1 169 0 1
|
// funcflags.go T_forloops1 169 0 1
|
||||||
// Flags FuncPropNeverReturns
|
// Flags FuncPropNeverReturns
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_forloops1(x int) {
|
func T_forloops1(x int) {
|
||||||
|
@ -174,7 +174,7 @@ func T_forloops1(x int) {
|
||||||
|
|
||||||
// funcflags.go T_forloops2 180 0 1
|
// funcflags.go T_forloops2 180 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_forloops2(x int) {
|
func T_forloops2(x int) {
|
||||||
|
@ -189,7 +189,7 @@ func T_forloops2(x int) {
|
||||||
|
|
||||||
// funcflags.go T_forloops3 195 0 1
|
// funcflags.go T_forloops3 195 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_forloops3(x int) {
|
func T_forloops3(x int) {
|
||||||
|
@ -209,7 +209,7 @@ func T_forloops3(x int) {
|
||||||
|
|
||||||
// funcflags.go T_hasgotos 215 0 1
|
// funcflags.go T_hasgotos 215 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_hasgotos(x int, y int) {
|
func T_hasgotos(x int, y int) {
|
||||||
|
@ -240,7 +240,7 @@ func T_hasgotos(x int, y int) {
|
||||||
// 0 ParamMayFeedIfOrSwitch
|
// 0 ParamMayFeedIfOrSwitch
|
||||||
// 1 ParamNoInfo
|
// 1 ParamNoInfo
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[64,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[64,0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_break_with_label(x int, y int) {
|
func T_break_with_label(x int, y int) {
|
||||||
|
@ -262,7 +262,7 @@ lab1:
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_callsexit(x int) {
|
func T_callsexit(x int) {
|
||||||
|
@ -274,7 +274,7 @@ func T_callsexit(x int) {
|
||||||
|
|
||||||
// funcflags.go T_exitinexpr 281 0 1
|
// funcflags.go T_exitinexpr 281 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// callsite: funcflags.go:286:18|0 flagstr "CallSiteOnPanicPath" flagval 2 score 102 mask 1 maskstr "panicPathAdj"
|
// callsite: funcflags.go:286:18|0 flagstr "CallSiteOnPanicPath" flagval 2 score 102 mask 1 maskstr "panicPathAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -291,7 +291,7 @@ func T_exitinexpr(x int) {
|
||||||
// funcflags.go T_select_noreturn 297 0 1
|
// funcflags.go T_select_noreturn 297 0 1
|
||||||
// Flags FuncPropNeverReturns
|
// Flags FuncPropNeverReturns
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[0,0,0],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[0,0,0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_select_noreturn(chi chan int, chf chan float32, p *int) {
|
func T_select_noreturn(chi chan int, chf chan float32, p *int) {
|
||||||
|
@ -327,7 +327,7 @@ func T_select_mayreturn(chi chan int, chf chan float32, p *int) int {
|
||||||
// funcflags.go T_calls_callsexit 334 0 1
|
// funcflags.go T_calls_callsexit 334 0 1
|
||||||
// Flags FuncPropNeverReturns
|
// Flags FuncPropNeverReturns
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":1,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":1,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// callsite: funcflags.go:335:15|0 flagstr "CallSiteOnPanicPath" flagval 2 score 102 mask 1 maskstr "panicPathAdj"
|
// callsite: funcflags.go:335:15|0 flagstr "CallSiteOnPanicPath" flagval 2 score 102 mask 1 maskstr "panicPathAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
|
|
@ -14,7 +14,7 @@ import "os"
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_simple(x int) {
|
func T_feeds_if_simple(x int) {
|
||||||
|
@ -29,7 +29,7 @@ func T_feeds_if_simple(x int) {
|
||||||
// 0 ParamMayFeedIfOrSwitch
|
// 0 ParamMayFeedIfOrSwitch
|
||||||
// 1 ParamFeedsIfOrSwitch
|
// 1 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[64,32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[64,32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_nested(x, y int) {
|
func T_feeds_if_nested(x, y int) {
|
||||||
|
@ -45,7 +45,7 @@ func T_feeds_if_nested(x, y int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_pointer(xp *int) {
|
func T_feeds_if_pointer(xp *int) {
|
||||||
|
@ -60,7 +60,7 @@ func T_feeds_if_pointer(xp *int) {
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// 1 ParamFeedsIfOrSwitch
|
// 1 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32,32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32,32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func (r T) T_feeds_if_simple_method(x int) {
|
func (r T) T_feeds_if_simple_method(x int) {
|
||||||
|
@ -80,7 +80,7 @@ func (r T) T_feeds_if_simple_method(x int) {
|
||||||
// 2 ParamNoInfo
|
// 2 ParamNoInfo
|
||||||
// 3 ParamNoInfo
|
// 3 ParamNoInfo
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,32,0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,32,0,0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_blanks(_ string, x int, _ bool, _ bool) {
|
func T_feeds_if_blanks(_ string, x int, _ bool, _ bool) {
|
||||||
|
@ -95,7 +95,7 @@ func T_feeds_if_blanks(_ string, x int, _ bool, _ bool) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_with_copy(x int) {
|
func T_feeds_if_with_copy(x int) {
|
||||||
|
@ -109,7 +109,7 @@ func T_feeds_if_with_copy(x int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_with_copy_expr 115 0 1
|
// params.go T_feeds_if_with_copy_expr 115 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_with_copy_expr(x int) {
|
func T_feeds_if_with_copy_expr(x int) {
|
||||||
|
@ -125,7 +125,7 @@ func T_feeds_if_with_copy_expr(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_switch(x int) {
|
func T_feeds_switch(x int) {
|
||||||
|
@ -140,7 +140,7 @@ func T_feeds_switch(x int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_toocomplex 146 0 1
|
// params.go T_feeds_if_toocomplex 146 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_toocomplex(x int, y int) {
|
func T_feeds_if_toocomplex(x int, y int) {
|
||||||
|
@ -155,7 +155,7 @@ func T_feeds_if_toocomplex(x int, y int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_redefined 161 0 1
|
// params.go T_feeds_if_redefined 161 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_redefined(x int) {
|
func T_feeds_if_redefined(x int) {
|
||||||
|
@ -169,7 +169,7 @@ func T_feeds_if_redefined(x int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_redefined2 175 0 1
|
// params.go T_feeds_if_redefined2 175 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_redefined2(x int) {
|
func T_feeds_if_redefined2(x int) {
|
||||||
|
@ -190,7 +190,7 @@ func T_feeds_if_redefined2(x int) {
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// 1 ParamNoInfo
|
// 1 ParamNoInfo
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32,0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_multi_if(x int, y int) {
|
func T_feeds_multi_if(x int, y int) {
|
||||||
|
@ -210,7 +210,7 @@ func T_feeds_multi_if(x int, y int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_redefined_indirectwrite 216 0 1
|
// params.go T_feeds_if_redefined_indirectwrite 216 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_redefined_indirectwrite(x int) {
|
func T_feeds_if_redefined_indirectwrite(x int) {
|
||||||
|
@ -225,7 +225,7 @@ func T_feeds_if_redefined_indirectwrite(x int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_redefined_indirectwrite_copy 231 0 1
|
// params.go T_feeds_if_redefined_indirectwrite_copy 231 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_redefined_indirectwrite_copy(x int) {
|
func T_feeds_if_redefined_indirectwrite_copy(x int) {
|
||||||
|
@ -245,7 +245,7 @@ func T_feeds_if_redefined_indirectwrite_copy(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIfOrSwitch
|
// 0 ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[32],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[32],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_expr1(x int) {
|
func T_feeds_if_expr1(x int) {
|
||||||
|
@ -256,7 +256,7 @@ func T_feeds_if_expr1(x int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_expr2 262 0 1
|
// params.go T_feeds_if_expr2 262 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_expr2(x int) {
|
func T_feeds_if_expr2(x int) {
|
||||||
|
@ -267,7 +267,7 @@ func T_feeds_if_expr2(x int) {
|
||||||
|
|
||||||
// params.go T_feeds_if_expr3 273 0 1
|
// params.go T_feeds_if_expr3 273 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_expr3(x int) {
|
func T_feeds_if_expr3(x int) {
|
||||||
|
@ -293,7 +293,7 @@ func T_feeds_if_shift_may_panic(x int) *int {
|
||||||
|
|
||||||
// params.go T_feeds_if_maybe_divide_by_zero 299 0 1
|
// params.go T_feeds_if_maybe_divide_by_zero 299 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_if_maybe_divide_by_zero(x int) {
|
func T_feeds_if_maybe_divide_by_zero(x int) {
|
||||||
|
@ -307,7 +307,7 @@ func T_feeds_if_maybe_divide_by_zero(x int) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamMayFeedIndirectCall
|
// 0 ParamMayFeedIndirectCall
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[16],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[16],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_indcall(x func()) {
|
func T_feeds_indcall(x func()) {
|
||||||
|
@ -320,7 +320,7 @@ func T_feeds_indcall(x func()) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamMayFeedIndirectCall|ParamFeedsIfOrSwitch
|
// 0 ParamMayFeedIndirectCall|ParamFeedsIfOrSwitch
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[48],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[48],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_indcall_and_if(x func()) {
|
func T_feeds_indcall_and_if(x func()) {
|
||||||
|
@ -333,7 +333,7 @@ func T_feeds_indcall_and_if(x func()) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsIndirectCall
|
// 0 ParamFeedsIndirectCall
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[8],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[8],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_indcall_with_copy(x func()) {
|
func T_feeds_indcall_with_copy(x func()) {
|
||||||
|
@ -348,7 +348,7 @@ func T_feeds_indcall_with_copy(x func()) {
|
||||||
// ParamFlags
|
// ParamFlags
|
||||||
// 0 ParamFeedsInterfaceMethodCall
|
// 0 ParamFeedsInterfaceMethodCall
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[2],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[2],"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_feeds_interface_method_call(i I) {
|
func T_feeds_interface_method_call(i I) {
|
||||||
|
|
|
@ -15,7 +15,7 @@ import "unsafe"
|
||||||
// ResultFlags
|
// ResultFlags
|
||||||
// 0 ResultIsAllocatedMem
|
// 0 ResultIsAllocatedMem
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[2]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[2]}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_simple_allocmem() *Bar {
|
func T_simple_allocmem() *Bar {
|
||||||
|
@ -66,7 +66,7 @@ func T_allocmem_three_returns(x int) []*Bar {
|
||||||
// ResultFlags
|
// ResultFlags
|
||||||
// 0 ResultAlwaysSameConstant
|
// 0 ResultAlwaysSameConstant
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[8]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[8]}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_return_nil() *Bar {
|
func T_return_nil() *Bar {
|
||||||
|
@ -247,7 +247,7 @@ func T_return_concrete_type_to_itf_mixed(x, y int) Itf {
|
||||||
// ResultFlags
|
// ResultFlags
|
||||||
// 0 ResultAlwaysSameInlinableFunc
|
// 0 ResultAlwaysSameInlinableFunc
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[32]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[32]}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_return_same_func() func(int) int {
|
func T_return_same_func() func(int) int {
|
||||||
|
@ -260,7 +260,7 @@ func T_return_same_func() func(int) int {
|
||||||
|
|
||||||
// returns.go T_return_different_funcs 266 0 1
|
// returns.go T_return_different_funcs 266 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[0]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[0]}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_return_different_funcs() func(int) int {
|
func T_return_different_funcs() func(int) int {
|
||||||
|
@ -275,7 +275,7 @@ func T_return_different_funcs() func(int) int {
|
||||||
// ResultFlags
|
// ResultFlags
|
||||||
// 0 ResultAlwaysSameInlinableFunc
|
// 0 ResultAlwaysSameInlinableFunc
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[32]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[32]}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
// returns.go T_return_same_closure.func1 287 0 1
|
// returns.go T_return_same_closure.func1 287 0 1
|
||||||
|
@ -294,7 +294,7 @@ func T_return_same_closure() func(int) int {
|
||||||
|
|
||||||
// returns.go T_return_different_closures 312 0 1
|
// returns.go T_return_different_closures 312 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[0]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":[0]}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
// returns.go T_return_different_closures.func1 313 0 1
|
// returns.go T_return_different_closures.func1 313 0 1
|
||||||
|
@ -332,7 +332,7 @@ func T_return_different_closures() func(int) int {
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
// returns.go T_return_noninlinable.func1.1 340 0 1
|
// returns.go T_return_noninlinable.func1.1 340 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":null}
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
func T_return_noninlinable(x int) func(int) int {
|
func T_return_noninlinable(x int) func(int) int {
|
||||||
|
|
|
@ -11,7 +11,7 @@ package returns2
|
||||||
|
|
||||||
// returns2.go T_return_feeds_iface_call 18 0 1
|
// returns2.go T_return_feeds_iface_call 18 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":null}
|
||||||
// callsite: returns2.go:19:13|0 flagstr "" flagval 0 score 1 mask 16384 maskstr "returnFeedsConcreteToInterfaceCallAdj"
|
// callsite: returns2.go:19:13|0 flagstr "" flagval 0 score 1 mask 16384 maskstr "returnFeedsConcreteToInterfaceCallAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -22,7 +22,7 @@ func T_return_feeds_iface_call() {
|
||||||
|
|
||||||
// returns2.go T_multi_return_feeds_iface_call 29 0 1
|
// returns2.go T_multi_return_feeds_iface_call 29 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":null,"ResultFlags":null}
|
||||||
// callsite: returns2.go:30:20|0 flagstr "" flagval 0 score 3 mask 16384 maskstr "returnFeedsConcreteToInterfaceCallAdj"
|
// callsite: returns2.go:30:20|0 flagstr "" flagval 0 score 3 mask 16384 maskstr "returnFeedsConcreteToInterfaceCallAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -33,7 +33,7 @@ func T_multi_return_feeds_iface_call() {
|
||||||
|
|
||||||
// returns2.go T_returned_inlinable_func_feeds_indirect_call 41 0 1
|
// returns2.go T_returned_inlinable_func_feeds_indirect_call 41 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// callsite: returns2.go:42:18|0 flagstr "" flagval 0 score -51 mask 8200 maskstr "passConstToIfAdj|returnFeedsInlinableFuncToIndCallAdj"
|
// callsite: returns2.go:42:18|0 flagstr "" flagval 0 score -51 mask 8200 maskstr "passConstToIfAdj|returnFeedsInlinableFuncToIndCallAdj"
|
||||||
// callsite: returns2.go:44:20|1 flagstr "" flagval 0 score -23 mask 8192 maskstr "returnFeedsInlinableFuncToIndCallAdj"
|
// callsite: returns2.go:44:20|1 flagstr "" flagval 0 score -23 mask 8192 maskstr "returnFeedsInlinableFuncToIndCallAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
|
@ -47,7 +47,7 @@ func T_returned_inlinable_func_feeds_indirect_call(q int) {
|
||||||
|
|
||||||
// returns2.go T_returned_noninlineable_func_feeds_indirect_call 54 0 1
|
// returns2.go T_returned_noninlineable_func_feeds_indirect_call 54 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// callsite: returns2.go:55:30|0 flagstr "" flagval 0 score -23 mask 4096 maskstr "returnFeedsFuncToIndCallAdj"
|
// callsite: returns2.go:55:30|0 flagstr "" flagval 0 score -23 mask 4096 maskstr "returnFeedsFuncToIndCallAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -58,7 +58,7 @@ func T_returned_noninlineable_func_feeds_indirect_call(q int) {
|
||||||
|
|
||||||
// returns2.go T_multi_return_feeds_indirect_call 65 0 1
|
// returns2.go T_multi_return_feeds_indirect_call 65 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0],"ResultFlags":null}
|
||||||
// callsite: returns2.go:66:29|0 flagstr "" flagval 0 score -21 mask 8192 maskstr "returnFeedsInlinableFuncToIndCallAdj"
|
// callsite: returns2.go:66:29|0 flagstr "" flagval 0 score -21 mask 8192 maskstr "returnFeedsInlinableFuncToIndCallAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -125,7 +125,7 @@ func T_two_calls_feed_ifswitch(q int) int {
|
||||||
|
|
||||||
// returns2.go T_chained_indirect_call 132 0 1
|
// returns2.go T_chained_indirect_call 132 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":null}
|
||||||
// callsite: returns2.go:135:18|0 flagstr "" flagval 0 score -31 mask 8192 maskstr "returnFeedsInlinableFuncToIndCallAdj"
|
// callsite: returns2.go:135:18|0 flagstr "" flagval 0 score -31 mask 8192 maskstr "returnFeedsInlinableFuncToIndCallAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
@ -137,7 +137,7 @@ func T_chained_indirect_call(x, y int) {
|
||||||
|
|
||||||
// returns2.go T_chained_conc_iface_call 144 0 1
|
// returns2.go T_chained_conc_iface_call 144 0 1
|
||||||
// <endpropsdump>
|
// <endpropsdump>
|
||||||
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":[]}
|
// {"Flags":0,"ParamFlags":[0,0],"ResultFlags":null}
|
||||||
// callsite: returns2.go:148:8|0 flagstr "" flagval 0 score 1 mask 16384 maskstr "returnFeedsConcreteToInterfaceCallAdj"
|
// callsite: returns2.go:148:8|0 flagstr "" flagval 0 score 1 mask 16384 maskstr "returnFeedsConcreteToInterfaceCallAdj"
|
||||||
// <endcallsites>
|
// <endcallsites>
|
||||||
// <endfuncpreamble>
|
// <endfuncpreamble>
|
||||||
|
|
Loading…
Reference in a new issue