<div dir="ltr"><div>Any suggestions for how to interpret DSCallGraph's output for the following?</div><div><br></div><div>I'm trying to use DSCallGraph to get a conservative estimate of a whole-program SCC call graph.  I wanted to see how it handles real call-graph cycles involving functions both internal and external to the module.  So I made a test program with the following actual call graph, using the standard library's "qsort" function:</div><div><br></div><div><font face="monospace, monospace">   main          --> DoSorting</font></div><div><font face="monospace, monospace">   DoSorting     --> qsort(..., QsortCallback)</font></div><div><font face="monospace, monospace">   qsort         --> QsortCallback (via callback)</font></div><div><font face="monospace, monospace">   QsortCallback --> DoSorting</font></div><div><br></div><div><br></div><div>There were two things in DSCallGraph's results which surprised me:</div><div><ul><li>"qsort" was placed into its own SCC (according to DSCallGraph::scc_begin/end).</li><li>"qsort" 's SCC did not have any callees (according to DSCallGraph::flat_callee_begin/end).</li></ul><div>I'm not sure that DSCallGraph's output is <i>wrong</i>, because it does report these caveats:</div></div><div><ul><li>DSCallGraph::called_from_incomplete_site( @QsortCallback ) returns true.</li><li>For all three callsites in the Module, DSCallGraph::callee_is_complete(...) returns false.</li></ul><div>Must I assume that the entire Module could be a single SCC whenever "called_from_incomplete_site" returns true "callee_is_complete" returns false?<br></div></div><div><br></div><div>And if I <i>do</i> need to be that pessimistic, anyone know why DSCallGraph doesn't apply that pessimism itself and return a single-SCC call graph in such cases?</div><div><br></div><div>Thanks,</div><div>Christian</div></div>