Progress update on extending static analyser to support c++'s virtual function

Ankur Saini
Mon Jun 21 08:52:38 GMT 2021

so I have a good news and a bad news 

good news is that I was successfully able to split the calls at every call-site during the creation of super-graph. 

I did it by simply adding an 'else’ statement where analyser handles splitting of snodes, so that it can still handle the known calls ( one with a cgraph_edge ) and also split the calls at the unknown call sites for analyzer to later speculate the source of the call with more information from regional models. 

something like this :-

in `ana::supergraph::supergraph(ana::logger*)` in <>

185  	if (cgraph_edge *edge = supergraph_call_edge (fun, stmt))
186		{
187 	  	   m_cgraph_edge_to_caller_prev_node.put(edge, node_for_stmts);
188 	  	   node_for_stmts = add_node (fun, bb, as_a <gcall *> (stmt), NULL);
189 	  	   m_cgraph_edge_to_caller_next_node.put (edge, node_for_stmts);
190  	}
191  	else
192  	{
193  	  gcall *call = dyn_cast<gcall *> (stmt);
194  	  if (call)
195  	    node_for_stmts = add_node (fun, bb, as_a <gcall *> (stmt), NULL);
196  	}

after building I could see analyzer creating snodes for returning calls from the function it was not before for various examples. 


now the bad news. 

I accidentally overwrote the file containing my ssh key to <> , with another ssh key. :(

is there something that I can do to retrieve it back ? or is it lost forever and I have no option left other than contacting <> regarding the same ?

More information about the Gcc mailing list