diff options
author | David Malcolm <dmalcolm@redhat.com> | 2023-09-07 18:43:05 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2023-09-07 18:43:05 -0400 |
commit | 1b761fede44afac5fa72e77caced9beda93fb381 (patch) | |
tree | 14d1fe093ae33055336266e107b0f5effbb8d506 /gcc/range-op-float.cc | |
parent | 7ece864adde82e6906e20a8b841361be2fd649d8 (diff) | |
download | gcc-1b761fede44afac5fa72e77caced9beda93fb381.zip gcc-1b761fede44afac5fa72e77caced9beda93fb381.tar.gz gcc-1b761fede44afac5fa72e77caced9beda93fb381.tar.bz2 |
analyzer: basic support for computed gotos (PR analyzer/110529)
PR analyzer/110529 notes that -fanalyzer was giving up on execution
paths that follow a computed goto, due to ignoring CFG edges with the
flag EDGE_ABNORMAL set.
This patch implements enough handling for them to allow analysis of
such execution paths to continue.
gcc/analyzer/ChangeLog:
PR analyzer/110529
* program-point.cc (program_point::on_edge): Don't reject
EDGE_ABNORMAL for computed gotos.
* region-model.cc (region_model::maybe_update_for_edge): Handle
computed goto statements.
(region_model::apply_constraints_for_ggoto): New.
* region-model.h (region_model::apply_constraints_for_ggoto): New decl.
* supergraph.cc (supernode::get_label): New.
* supergraph.h (supernode::get_label): New decl.
gcc/testsuite/ChangeLog:
PR analyzer/110529
* c-c++-common/analyzer/computed-goto-1.c: New test.
* gcc.dg/analyzer/computed-goto-pr110529.c: New test.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc/range-op-float.cc')
0 files changed, 0 insertions, 0 deletions