aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2023-12-14 09:10:10 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2023-12-14 09:10:10 -0500
commit8cf5afba5dc482fe7063654720bfb0c45354998c (patch)
treed04c3f9b837f31666358110e2576875f1bd4472c /gcc/analyzer
parent2f46e3578d45ff060a0a329cb39d4f52878f9d5a (diff)
downloadgcc-8cf5afba5dc482fe7063654720bfb0c45354998c.zip
gcc-8cf5afba5dc482fe7063654720bfb0c45354998c.tar.gz
gcc-8cf5afba5dc482fe7063654720bfb0c45354998c.tar.bz2
analyzer: cleanups [PR112655]
Avoid copying eedges in infinite_loop::infinite_loop. Use initializer lists in the various places reported in PR analyzer/112655 (apart from coord_test's ctor, which would require nontrivial refactoring). gcc/analyzer/ChangeLog: PR analyzer/112655 * infinite-loop.cc (infinite_loop::infinite_loop): Pass eedges via rvalue reference rather than by value. (starts_infinite_loop_p): Move eedges when constructing an infinite_loop instance. * sm-file.cc (fileptr_state_machine::fileptr_state_machine): Use initializer list for states. * sm-sensitive.cc (sensitive_state_machine::sensitive_state_machine): Likewise. * sm-signal.cc (signal_state_machine::signal_state_machine): Likewise. * sm-taint.cc (taint_state_machine::taint_state_machine): Likewise. * varargs.cc (va_list_state_machine::va_list_state_machine): Likewise. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc/analyzer')
-rw-r--r--gcc/analyzer/infinite-loop.cc8
-rw-r--r--gcc/analyzer/sm-file.cc12
-rw-r--r--gcc/analyzer/sm-sensitive.cc6
-rw-r--r--gcc/analyzer/sm-signal.cc6
-rw-r--r--gcc/analyzer/sm-taint.cc12
-rw-r--r--gcc/analyzer/varargs.cc6
6 files changed, 25 insertions, 25 deletions
diff --git a/gcc/analyzer/infinite-loop.cc b/gcc/analyzer/infinite-loop.cc
index c47ce1c..fc194d9 100644
--- a/gcc/analyzer/infinite-loop.cc
+++ b/gcc/analyzer/infinite-loop.cc
@@ -71,7 +71,7 @@ struct infinite_loop
{
infinite_loop (const exploded_node &enode,
location_t loc,
- std::vector<const exploded_edge *> eedges,
+ std::vector<const exploded_edge *> &&eedges,
logger *logger)
: m_enode (enode),
m_loc (loc),
@@ -423,9 +423,9 @@ starts_infinite_loop_p (const exploded_node &enode,
free (filename);
}
return ::make_unique<infinite_loop> (enode,
- first_loc,
- eedges,
- logger);
+ first_loc,
+ std::move (eedges),
+ logger);
}
else
{
diff --git a/gcc/analyzer/sm-file.cc b/gcc/analyzer/sm-file.cc
index f8e31f8..323df23 100644
--- a/gcc/analyzer/sm-file.cc
+++ b/gcc/analyzer/sm-file.cc
@@ -270,13 +270,13 @@ private:
/* fileptr_state_machine's ctor. */
fileptr_state_machine::fileptr_state_machine (logger *logger)
-: state_machine ("file", logger)
+: state_machine ("file", logger),
+ m_unchecked (add_state ("unchecked")),
+ m_null (add_state ("null")),
+ m_nonnull (add_state ("nonnull")),
+ m_closed (add_state ("closed")),
+ m_stop (add_state ("stop"))
{
- m_unchecked = add_state ("unchecked");
- m_null = add_state ("null");
- m_nonnull = add_state ("nonnull");
- m_closed = add_state ("closed");
- m_stop = add_state ("stop");
}
/* Get a set of functions that are known to take a FILE * that must be open,
diff --git a/gcc/analyzer/sm-sensitive.cc b/gcc/analyzer/sm-sensitive.cc
index 4776d64..aea337cd 100644
--- a/gcc/analyzer/sm-sensitive.cc
+++ b/gcc/analyzer/sm-sensitive.cc
@@ -161,10 +161,10 @@ private:
/* sensitive_state_machine's ctor. */
sensitive_state_machine::sensitive_state_machine (logger *logger)
-: state_machine ("sensitive", logger)
+: state_machine ("sensitive", logger),
+ m_sensitive (add_state ("sensitive")),
+ m_stop (add_state ("stop"))
{
- m_sensitive = add_state ("sensitive");
- m_stop = add_state ("stop");
}
/* Warn about an exposure at NODE and STMT if ARG is in the "sensitive"
diff --git a/gcc/analyzer/sm-signal.cc b/gcc/analyzer/sm-signal.cc
index 6bca395..799bae5 100644
--- a/gcc/analyzer/sm-signal.cc
+++ b/gcc/analyzer/sm-signal.cc
@@ -182,10 +182,10 @@ private:
/* signal_state_machine's ctor. */
signal_state_machine::signal_state_machine (logger *logger)
-: state_machine ("signal", logger)
+: state_machine ("signal", logger),
+ m_in_signal_handler (add_state ("in_signal_handler")),
+ m_stop (add_state ("stop"))
{
- m_in_signal_handler = add_state ("in_signal_handler");
- m_stop = add_state ("stop");
}
/* Update MODEL for edges that simulate HANDLER_FUN being called as
diff --git a/gcc/analyzer/sm-taint.cc b/gcc/analyzer/sm-taint.cc
index 597e8e5..ce18957 100644
--- a/gcc/analyzer/sm-taint.cc
+++ b/gcc/analyzer/sm-taint.cc
@@ -830,13 +830,13 @@ private:
/* taint_state_machine's ctor. */
taint_state_machine::taint_state_machine (logger *logger)
-: state_machine ("taint", logger)
+: state_machine ("taint", logger),
+ m_tainted (add_state ("tainted")),
+ m_has_lb (add_state ("has_lb")),
+ m_has_ub (add_state ("has_ub")),
+ m_stop (add_state ("stop")),
+ m_tainted_control_flow (add_state ("tainted-control-flow"))
{
- m_tainted = add_state ("tainted");
- m_has_lb = add_state ("has_lb");
- m_has_ub = add_state ("has_ub");
- m_stop = add_state ("stop");
- m_tainted_control_flow = add_state ("tainted-control-flow");
}
state_machine::state_t
diff --git a/gcc/analyzer/varargs.cc b/gcc/analyzer/varargs.cc
index 7cdfb20..d505a80 100644
--- a/gcc/analyzer/varargs.cc
+++ b/gcc/analyzer/varargs.cc
@@ -241,10 +241,10 @@ private:
/* va_list_state_machine's ctor. */
va_list_state_machine::va_list_state_machine (logger *logger)
-: state_machine ("va_list", logger)
+: state_machine ("va_list", logger),
+ m_started (add_state ("started")),
+ m_ended (add_state ("ended"))
{
- m_started = add_state ("started");
- m_ended = add_state ("ended");
}
/* Implementation of the various "va_*" functions for