public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [pushed] analyzer: cleanups [PR112655]
@ 2023-12-14 14:13 David Malcolm
  0 siblings, 0 replies; only message in thread
From: David Malcolm @ 2023-12-14 14:13 UTC (permalink / raw)
  To: gcc-patches; +Cc: David Malcolm

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).

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
Pushed to trunk as r14-6549-g8cf5afba5dc482

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.
---
 gcc/analyzer/infinite-loop.cc |  8 ++++----
 gcc/analyzer/sm-file.cc       | 12 ++++++------
 gcc/analyzer/sm-sensitive.cc  |  6 +++---
 gcc/analyzer/sm-signal.cc     |  6 +++---
 gcc/analyzer/sm-taint.cc      | 12 ++++++------
 gcc/analyzer/varargs.cc       |  6 +++---
 6 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/gcc/analyzer/infinite-loop.cc b/gcc/analyzer/infinite-loop.cc
index c47ce1c89085..fc194d919cf3 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 f8e31f873a5a..323df23b1b71 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 4776d6465bb5..aea337cdccda 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 6bca395ac5c7..799bae5364b8 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 597e8e55609a..ce18957b56b8 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 7cdfb203a339..d505a80b06a0 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
-- 
2.26.3


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-12-14 14:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-14 14:13 [pushed] analyzer: cleanups [PR112655] David Malcolm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).