diff --git a/cmd/callgraph/main.go b/cmd/callgraph/main.go index 2aa9739a41..29179dd877 100644 --- a/cmd/callgraph/main.go +++ b/cmd/callgraph/main.go @@ -42,7 +42,7 @@ import ( ) var algoFlag = flag.String("algo", "rta", - `Call graph construction algorithm, one of "rta" or "pta"`) + `Call graph construction algorithm (static, cha, rta, pta)`) var testFlag = flag.Bool("test", false, "Loads test code (*_test.go) for imported packages") diff --git a/go/callgraph/static/static.go b/go/callgraph/static/static.go index ebb183bdc4..709bb7b6bd 100644 --- a/go/callgraph/static/static.go +++ b/go/callgraph/static/static.go @@ -15,6 +15,8 @@ func CallGraph(prog *ssa.Program) *callgraph.Graph { cg := callgraph.New(nil) // TODO(adonovan) eliminate concept of rooted callgraph // TODO(adonovan): opt: use only a single pass over the ssa.Program. + // TODO(adonovan): opt: this is slower than RTA (perhaps because + // the lower precision means so many edges are allocated)! for f := range ssautil.AllFunctions(prog) { fnode := cg.CreateNode(f) for _, b := range f.Blocks {