This is an example of converting the "gate" and "execute" functions of
a pass into C++ virtual functions, so that in the next patch we can move
a variable into member data of the opt_pass subclass.
gcc/testsuite/
* gcc.dg/plugin/one_time_plugin.c: (one_pass_gate): convert
to member function...
(one_pass::gate): ...this
(one_pass_exec): convert to member function...
(one_pass::impl_execute): ...this
---
gcc/testsuite/gcc.dg/plugin/one_time_plugin.c | 36 +++++++++++++--------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
index 2d996da..7e93e65 100644
--- a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
@@ -12,22 +12,6 @@
int plugin_is_GPL_compatible;
-static bool one_pass_gate (void)
-{
- return true;
-}
-
-static unsigned int one_pass_exec (void)
-{
- static int counter = 0;
-
- if (counter > 0) {
- printf ("Executed more than once \n");
- }
- counter++;
- return 0;
-}
-
namespace {
const pass_data pass_data_one_pass =
@@ -53,13 +37,29 @@ public:
{}
/* opt_pass methods: */
- bool gate () { return one_pass_gate (); }
- unsigned int execute () { return one_pass_exec (); }
+ bool gate ();
+ unsigned int execute ();
}; // class one_pass
} // anon namespace
+bool one_pass::gate (void)
+{
+ return true;
+}
+
+unsigned int one_pass::execute ()
+{
+ static int counter = 0;
+
+ if (counter > 0) {
+ printf ("Executed more than once \n");
+ }
+ counter++;
+ return 0;
+}
+
gimple_opt_pass *
make_one_pass (gcc::context *ctxt)
{
--
1.7.11.7