diff options
author | David Malcolm <dmalcolm@redhat.com> | 2022-07-07 15:50:26 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2022-07-07 15:50:26 -0400 |
commit | 897b3b31f0a94b8bac59c6061655c6a32646d0a0 (patch) | |
tree | 65777b219fc02057535cf09d3f199d58a259e783 /gcc/analyzer/sm.h | |
parent | ad6135e261ced29972e5aa33404e45bcdd99440f (diff) | |
download | gcc-897b3b31f0a94b8bac59c6061655c6a32646d0a0.zip gcc-897b3b31f0a94b8bac59c6061655c6a32646d0a0.tar.gz gcc-897b3b31f0a94b8bac59c6061655c6a32646d0a0.tar.bz2 |
analyzer: fix false positives from -Wanalyzer-tainted-divisor [PR106225]
gcc/analyzer/ChangeLog:
PR analyzer/106225
* sm-taint.cc (taint_state_machine::on_stmt): Move handling of
assignments from division to...
(taint_state_machine::check_for_tainted_divisor): ...this new
function. Reject warning when the divisor is known to be non-zero.
* sm.cc: Include "analyzer/program-state.h".
(sm_context::get_old_region_model): New.
* sm.h (sm_context::get_old_region_model): New decl.
gcc/testsuite/ChangeLog:
PR analyzer/106225
* gcc.dg/analyzer/taint-divisor-1.c: Add test coverage for various
correct and incorrect checks against zero.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc/analyzer/sm.h')
-rw-r--r-- | gcc/analyzer/sm.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/analyzer/sm.h b/gcc/analyzer/sm.h index e80ef1f..353a6db 100644 --- a/gcc/analyzer/sm.h +++ b/gcc/analyzer/sm.h @@ -279,6 +279,8 @@ public: virtual const program_state *get_old_program_state () const = 0; virtual const program_state *get_new_program_state () const = 0; + const region_model *get_old_region_model () const; + protected: sm_context (int sm_idx, const state_machine &sm) : m_sm_idx (sm_idx), m_sm (sm) {} |