analyzer: implement __analyzer_dump_escaped
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 7 Jan 2022 18:36:00 +0000 (13:36 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Sat, 8 Jan 2022 00:04:01 +0000 (19:04 -0500)
commit4409152a4acaec5b58a93996088d0df9aaa779b8
tree53dd517ebdc4f47e9ef3dce3bfa1f55a30818042
parentc1b7d28a5987e74232b7f054849f8bd8ccc7e7de
analyzer: implement __analyzer_dump_escaped

PR analyzer/103546 seems to involve an issue in how the analyzer
tracks which decls have escaped, so this patch adds a way to directly
test this from DejaGnu.

gcc/analyzer/ChangeLog:
* region-model-impl-calls.cc (cmp_decls): New.
(cmp_decls_ptr_ptr): New.
(region_model::impl_call_analyzer_dump_escaped): New.
* region-model.cc (region_model::on_stmt_pre): Handle
__analyzer_dump_escaped.
* region-model.h (region_model::impl_call_analyzer_dump_escaped):
New decl.
* store.h (binding_cluster::get_base_region): New accessor.

gcc/ChangeLog:
* doc/analyzer.texi
(Special Functions for Debugging the Analyzer): Document
__analyzer_dump_escaped.

gcc/testsuite/ChangeLog:
* gcc.dg/analyzer/analyzer-decls.h (__analyzer_dump_escaped): New
decl.
* gcc.dg/analyzer/escaping-1.c: New test.
gcc/analyzer/region-model-impl-calls.cc
gcc/analyzer/region-model.cc
gcc/analyzer/region-model.h
gcc/analyzer/store.h
gcc/doc/analyzer.texi
gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h
gcc/testsuite/gcc.dg/analyzer/escaping-1.c [new file with mode: 0644]