From: David Malcolm <dmalcolm@redhat.com>
To: gcc-patches@gcc.gnu.org
Cc: David Malcolm <dmalcolm@redhat.com>
Subject: [committed 7/8] analyzer: use std::unique_ptr for known functions
Date: Thu, 3 Nov 2022 13:51:34 -0400 [thread overview]
Message-ID: <20221103175135.2269543-8-dmalcolm@redhat.com> (raw)
In-Reply-To: <20221103175135.2269543-1-dmalcolm@redhat.com>
gcc/analyzer/ChangeLog:
* analyzer.h: Use std::unique_ptr for known functions.
* engine.cc: Likewise.
* known-function-manager.cc: Likewise.
* known-function-manager.h: Likewise.
gcc/testsuite/ChangeLog:
* gcc.dg/plugin/analyzer_kernel_plugin.c: Use std::unique_ptr for
known functions.
* gcc.dg/plugin/analyzer_known_fns_plugin.c: Likewise.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
gcc/analyzer/analyzer.h | 2 +-
gcc/analyzer/engine.cc | 4 ++--
gcc/analyzer/known-function-manager.cc | 5 +++--
gcc/analyzer/known-function-manager.h | 2 +-
gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c | 7 ++++---
gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.c | 7 ++++---
6 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/gcc/analyzer/analyzer.h b/gcc/analyzer/analyzer.h
index d8d3e78b20a..88fdc1d04f0 100644
--- a/gcc/analyzer/analyzer.h
+++ b/gcc/analyzer/analyzer.h
@@ -244,7 +244,7 @@ class plugin_analyzer_init_iface
public:
virtual void register_state_machine (state_machine *) = 0;
virtual void register_known_function (const char *name,
- known_function *) = 0;
+ std::unique_ptr<known_function>) = 0;
virtual logger *get_logger () const = 0;
};
diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc
index d770c6fc29c..fe17f8f76ce 100644
--- a/gcc/analyzer/engine.cc
+++ b/gcc/analyzer/engine.cc
@@ -5960,10 +5960,10 @@ public:
}
void register_known_function (const char *name,
- known_function *kf) final override
+ std::unique_ptr<known_function> kf) final override
{
LOG_SCOPE (m_logger);
- m_known_fn_mgr->add (name, kf);
+ m_known_fn_mgr->add (name, std::move (kf));
}
logger *get_logger () const final override
diff --git a/gcc/analyzer/known-function-manager.cc b/gcc/analyzer/known-function-manager.cc
index 42dfe3af583..7341b068480 100644
--- a/gcc/analyzer/known-function-manager.cc
+++ b/gcc/analyzer/known-function-manager.cc
@@ -48,11 +48,12 @@ known_function_manager::~known_function_manager ()
}
void
-known_function_manager::add (const char *name, known_function *kf)
+known_function_manager::add (const char *name,
+ std::unique_ptr<known_function> kf)
{
LOG_FUNC_1 (get_logger (), "registering %s", name);
tree id = get_identifier (name);
- m_map_id_to_kf.put (id, kf);
+ m_map_id_to_kf.put (id, kf.release ());
}
const known_function *
diff --git a/gcc/analyzer/known-function-manager.h b/gcc/analyzer/known-function-manager.h
index 2b95b7e2589..daf1bc57855 100644
--- a/gcc/analyzer/known-function-manager.h
+++ b/gcc/analyzer/known-function-manager.h
@@ -30,7 +30,7 @@ class known_function_manager : public log_user
public:
known_function_manager (logger *logger);
~known_function_manager ();
- void add (const char *name, known_function *kf);
+ void add (const char *name, std::unique_ptr<known_function> kf);
const known_function *get_by_identifier (tree identifier);
const known_function *get_by_fndecl (tree fndecl);
diff --git a/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c b/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c
index dfa30c8d61b..92b4dfbd4d0 100644
--- a/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c
@@ -210,10 +210,11 @@ kernel_analyzer_init_cb (void *gcc_data, void */*user_data*/)
LOG_SCOPE (iface->get_logger ());
if (0)
inform (input_location, "got here: kernel_analyzer_init_cb");
- iface->register_known_function ("copy_from_user",
- new known_function_copy_from_user ());
+ iface->register_known_function
+ ("copy_from_user",
+ make_unique<known_function_copy_from_user> ());
iface->register_known_function ("copy_to_user",
- new known_function_copy_to_user ());
+ make_unique<known_function_copy_to_user> ());
}
} // namespace ana
diff --git a/gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.c b/gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.c
index 5c1f3986aa7..e9f607f58fe 100644
--- a/gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.c
@@ -175,9 +175,10 @@ known_fn_analyzer_init_cb (void *gcc_data, void */*user_data*/)
if (0)
inform (input_location, "got here: known_fn_analyzer_init_cb");
iface->register_known_function ("returns_42",
- new known_function_returns_42 ());
- iface->register_known_function ("attempt_to_copy",
- new known_function_attempt_to_copy ());
+ make_unique<known_function_returns_42> ());
+ iface->register_known_function
+ ("attempt_to_copy",
+ make_unique<known_function_attempt_to_copy> ());
}
} // namespace ana
--
2.26.3
next prev parent reply other threads:[~2022-11-03 17:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-03 17:51 [committed 0/8] Use std::unique_ptr in analyzer David Malcolm
2022-11-03 17:51 ` [committed 1/8] analyzer: use std::unique_ptr for pending_diagnostic/note David Malcolm
2022-11-03 17:51 ` [committed 2/8] analyzer: use std::unique_ptr for saved_diagnostic::m_stmt_finder David Malcolm
2022-11-03 17:51 ` [committed 3/8] analyzer: use std::unique_ptr for custom_edge_info pointers David Malcolm
2022-11-03 17:51 ` [committed 4/8] analyzer: use std::unique_ptr for feasibility_problems and exploded_path David Malcolm
2022-11-03 17:51 ` [committed 5/8] analyzer: use std::unique_ptr for checker_event David Malcolm
2022-11-03 17:51 ` [committed 6/8] analyzer: use std::unique_ptr during bifurcation David Malcolm
2022-11-03 17:51 ` David Malcolm [this message]
2022-11-03 17:51 ` [committed 8/8] analyzer: use std::unique_ptr for state machines from plugins David Malcolm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221103175135.2269543-8-dmalcolm@redhat.com \
--to=dmalcolm@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).