analyzer: fix false positives from -Wanalyzer-tainted-divisor [PR106225]
authorDavid Malcolm <dmalcolm@redhat.com>
Wed, 27 Jul 2022 21:38:55 +0000 (17:38 -0400)
committerSlava Barinov <v.barinov@samsung.com>
Thu, 27 Apr 2023 09:06:07 +0000 (12:06 +0300)
commit03bb7e64c3e40d52045e2357cfe77608d5f4e122
treec7357a11ce5a96eb9afda96a7157e78e24d8b013
parente3fb09f969c5800ddaf8e5d44d84a3c9c9f96432
analyzer: fix false positives from -Wanalyzer-tainted-divisor [PR106225]

(cherry picked from r13-1562-g897b3b31f0a94b)

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>
gcc/analyzer/sm.h