aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer/sm-signal.cc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-08-28 10:10:38 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2020-09-09 16:59:32 -0400
commit25ef215abb1aa701db7ab173b9f2ac653cecf634 (patch)
tree32bb13109b66be13aa99258314770b33ac8f0fde /gcc/analyzer/sm-signal.cc
parent6d9ca8c8604e2e7c2403794baf691b260cc71fb9 (diff)
downloadgcc-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-signal.cc')
-rw-r--r--gcc/analyzer/sm-signal.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/analyzer/sm-signal.cc b/gcc/analyzer/sm-signal.cc
index 21c9d58..bf6ea48 100644
--- a/gcc/analyzer/sm-signal.cc
+++ b/gcc/analyzer/sm-signal.cc
@@ -346,9 +346,10 @@ signal_state_machine::on_stmt (sm_context *sm_ctxt,
if (const gcall *call = dyn_cast <const gcall *> (stmt))
if (tree callee_fndecl = sm_ctxt->get_fndecl_for_call (call))
if (signal_unsafe_p (callee_fndecl))
- sm_ctxt->warn_for_state (node, stmt, NULL_TREE, m_in_signal_handler,
- new signal_unsafe_call (*this, call,
- callee_fndecl));
+ if (sm_ctxt->get_global_state () == m_in_signal_handler)
+ sm_ctxt->warn (node, stmt, NULL_TREE,
+ new signal_unsafe_call (*this, call,
+ callee_fndecl));
}
return false;