analyzer: Fix PR analyzer/101980
commite92d0ff6b5e6d4b95c04fc3e326d40efeb136086
authorAnkur Saini <arsenic@sourceware.org>
Thu, 19 Aug 2021 14:24:56 +0000 (19 19:54 +0530)
committerAnkur Saini <arsenic@sourceware.org>
Sat, 21 Aug 2021 05:03:54 +0000 (21 10:33 +0530)
tree9e103620d3d1858499117a8e3b7126333f0f5f41
parent7c9e1645836d7746838acebb7018b1774490ab5c
analyzer: Fix PR analyzer/101980

2021-08-19  Ankur Saini  <arsenic@sourceware.org>

gcc/analyzer/ChangeLog:
PR analyzer/101980
* diagnostic-manager.cc
(diagnostic_manager::prune_for_sm_diagnostic)<case EK_CALL_EDGE>: Use
caller_model only when the supergraph_edge doesn't exixt.
(diagnostic_manager::prune_for_sm_diagnostic)<case EK_RETURN_EDGE>:
Likewise.
* engine.cc (exploded_graph::create_dynamic_call): Rename to...
(exploded_graph::maybe_create_dynamic_call): ...this, return call
creation status.
(exploded_graph::process_node): Handle calls which were not dynamically
discovered.
* exploded-graph.h (exploded_graph::create_dynamic_call): Rename to...
(exploded_graph::maybe_create_dynamic_call): ...this.
* region-model.cc (region_model::update_for_gcall): New param, use it
to push call to frame.
(region_model::update_for_call_superedge): Pass callee function to
update_for_gcall.
* region-model.h (region_model::update_for_gcall): New param.

gcc/testsuite/ChangeLog:
PR analyzer/101980
* gcc.dg/analyzer/function-ptr-2.c : Add issue for double 'free'.
* gcc.dg/analyzer/malloc-callbacks.c : Fix xfail testcase.
gcc/analyzer/diagnostic-manager.cc
gcc/analyzer/engine.cc
gcc/analyzer/exploded-graph.h
gcc/analyzer/region-model.cc
gcc/analyzer/region-model.h
gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c
gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c