diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-08-28 10:10:38 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-09-09 16:59:32 -0400 |
commit | 25ef215abb1aa701db7ab173b9f2ac653cecf634 (patch) | |
tree | 32bb13109b66be13aa99258314770b33ac8f0fde /gcc/analyzer/sm-file.cc | |
parent | 6d9ca8c8604e2e7c2403794baf691b260cc71fb9 (diff) | |
download | gcc-25ef215abb1aa701db7ab173b9f2ac653cecf634.zip gcc-25ef215abb1aa701db7ab173b9f2ac653cecf634.tar.gz gcc-25ef215abb1aa701db7ab173b9f2ac653cecf634.tar.bz2 |
analyzer: eliminate sm_context::warn_for_state in favor of a new 'warn' vfunc
This patch is yet more preliminary work towards generalizing sm-malloc.cc
beyond just malloc/free.
It eliminates sm_context::warn_for_state in terms of a new sm_context::warn
vfunc, guarded by sm_context::get_state calls.
gcc/analyzer/ChangeLog:
* diagnostic-manager.cc
(null_assignment_sm_context::warn_for_state): Replace with...
(null_assignment_sm_context::warn): ...this.
* engine.cc (impl_sm_context::warn_for_state): Replace with...
(impl_sm_context::warn): ...this.
* sm-file.cc (fileptr_state_machine::on_stmt): Replace
warn_for_state and on_transition calls with a get_state
test guarding warn and set_next_state calls.
* sm-malloc.cc (malloc_state_machine::on_stmt): Likewise.
* sm-pattern-test.cc (pattern_test_state_machine::on_condition):
Replace warn_for_state call with warn call.
* sm-sensitive.cc
(sensitive_state_machine::warn_for_any_exposure): Replace
warn_for_state call with a get_state test guarding a warn call.
* sm-signal.cc (signal_state_machine::on_stmt): Likewise.
* sm-taint.cc (taint_state_machine::on_stmt): Replace
warn_for_state and on_transition calls with a get_state
test guarding warn and set_next_state calls.
* sm.h (sm_context::warn_for_state): Replace with...
(sm_context::warn): ...this.
Diffstat (limited to 'gcc/analyzer/sm-file.cc')
-rw-r--r-- | gcc/analyzer/sm-file.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/analyzer/sm-file.cc b/gcc/analyzer/sm-file.cc index 33b4451..58a0fd4 100644 --- a/gcc/analyzer/sm-file.cc +++ b/gcc/analyzer/sm-file.cc @@ -344,9 +344,12 @@ fileptr_state_machine::on_stmt (sm_context *sm_ctxt, sm_ctxt->on_transition (node, stmt , arg, m_nonnull, m_closed); - sm_ctxt->warn_for_state (node, stmt, arg, m_closed, - new double_fclose (*this, diag_arg)); - sm_ctxt->on_transition (node, stmt, arg, m_closed, m_stop); + if (sm_ctxt->get_state (stmt, arg) == m_closed) + { + sm_ctxt->warn (node, stmt, arg, + new double_fclose (*this, diag_arg)); + sm_ctxt->set_next_state (stmt, arg, m_stop); + } return true; } |