diff mbox series

[4/5] dce: Use a base common base class for pass_cd_dce and pass_dce

Message ID 20241014022201.1011677-4-quic_apinski@quicinc.com
State New
Headers show
Series [1/5] passes: Move #undef to pass-instances.def | expand

Commit Message

Andrew Pinski Oct. 14, 2024, 2:22 a.m. UTC
The classes pass_dce and pass_cd_dce share the same mechansim for their
params and almost the same execute functionality so let's create a new
base class which will be used for these two classes and move the common
code into the same one.

Note update_address_taken_p was updated to be a NSDMI instead of initializing
it explicitly in the constructor.

Bootstrapped and tested on x86_64-linux-gnu.

gcc/ChangeLog:

	* tree-ssa-dce.cc (tree_ssa_dce): Remove.
	(tree_ssa_cd_dce): Remove.
	(class pass_dce_base): New class.
	(class pass_dce): Use pass_dce_base as the base class.
	(class pass_cd_dce): Likewise.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
---
 gcc/tree-ssa-dce.cc | 72 +++++++++++++++++++--------------------------
 1 file changed, 31 insertions(+), 41 deletions(-)

Comments

Richard Biener Oct. 14, 2024, 1:07 p.m. UTC | #1
On Mon, Oct 14, 2024 at 4:30 AM Andrew Pinski <quic_apinski@quicinc.com> wrote:
>
> The classes pass_dce and pass_cd_dce share the same mechansim for their
> params and almost the same execute functionality so let's create a new
> base class which will be used for these two classes and move the common
> code into the same one.
>
> Note update_address_taken_p was updated to be a NSDMI instead of initializing
> it explicitly in the constructor.
>
> Bootstrapped and tested on x86_64-linux-gnu.

OK.

Thanks,
Richard.

> gcc/ChangeLog:
>
>         * tree-ssa-dce.cc (tree_ssa_dce): Remove.
>         (tree_ssa_cd_dce): Remove.
>         (class pass_dce_base): New class.
>         (class pass_dce): Use pass_dce_base as the base class.
>         (class pass_cd_dce): Likewise.
>
> Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
> ---
>  gcc/tree-ssa-dce.cc | 72 +++++++++++++++++++--------------------------
>  1 file changed, 31 insertions(+), 41 deletions(-)
>
> diff --git a/gcc/tree-ssa-dce.cc b/gcc/tree-ssa-dce.cc
> index 66612b5d575..3075459e25f 100644
> --- a/gcc/tree-ssa-dce.cc
> +++ b/gcc/tree-ssa-dce.cc
> @@ -2057,19 +2057,6 @@ perform_tree_ssa_dce (bool aggressive)
>    return todo;
>  }
>
> -/* Pass entry points.  */
> -static unsigned int
> -tree_ssa_dce (void)
> -{
> -  return perform_tree_ssa_dce (/*aggressive=*/false);
> -}
> -
> -static unsigned int
> -tree_ssa_cd_dce (void)
> -{
> -  return perform_tree_ssa_dce (/*aggressive=*/optimize >= 2);
> -}
> -
>  namespace {
>
>  const pass_data pass_data_dce =
> @@ -2085,15 +2072,11 @@ const pass_data pass_data_dce =
>    0, /* todo_flags_finish */
>  };
>
> -class pass_dce : public gimple_opt_pass
> +class pass_dce_base : public gimple_opt_pass
>  {
>  public:
> -  pass_dce (gcc::context *ctxt)
> -    : gimple_opt_pass (pass_data_dce, ctxt), update_address_taken_p (false)
> -  {}
> -
>    /* opt_pass methods: */
> -  opt_pass * clone () final override { return new pass_dce (m_ctxt); }
> +  bool gate (function *) final override { return flag_tree_dce != 0; }
>    void set_pass_param (unsigned n, bool param) final override
>      {
>        gcc_assert (n == 0 || n == 1);
> @@ -2102,17 +2085,38 @@ public:
>        else if (n == 1)
>         remove_unused_locals_p = param;
>      }
> -  bool gate (function *) final override { return flag_tree_dce != 0; }
> -  unsigned int execute (function *) final override
> +
> +protected:
> +  pass_dce_base (const pass_data &data, gcc::context *ctxt)
> +    : gimple_opt_pass (data, ctxt)
> +  {}
> +  unsigned int execute_dce (function *, bool aggressive)
>      {
> -      return (tree_ssa_dce ()
> +      return (perform_tree_ssa_dce (aggressive)
>               | (remove_unused_locals_p ? TODO_remove_unused_locals : 0)
>               | (update_address_taken_p ? TODO_update_address_taken : 0));
>      }
>
>  private:
> -  bool update_address_taken_p;
> +  bool update_address_taken_p = false;
>    bool remove_unused_locals_p = false;
> +}; // class pass_dce_base
> +
> +
> +class pass_dce : public pass_dce_base
> +{
> +public:
> +  pass_dce (gcc::context *ctxt)
> +    : pass_dce_base (pass_data_dce, ctxt)
> +  {}
> +
> +  /* opt_pass methods: */
> +  opt_pass * clone () final override { return new pass_dce (m_ctxt); }
> +  unsigned int execute (function *func) final override
> +    {
> +      return execute_dce (func, /*aggressive=*/false);
> +    }
> +
>  }; // class pass_dce
>
>  } // anon namespace
> @@ -2138,34 +2142,20 @@ const pass_data pass_data_cd_dce =
>    0, /* todo_flags_finish */
>  };
>
> -class pass_cd_dce : public gimple_opt_pass
> +class pass_cd_dce : public pass_dce_base
>  {
>  public:
>    pass_cd_dce (gcc::context *ctxt)
> -    : gimple_opt_pass (pass_data_cd_dce, ctxt), update_address_taken_p (false)
> +    : pass_dce_base (pass_data_cd_dce, ctxt)
>    {}
>
>    /* opt_pass methods: */
>    opt_pass * clone () final override { return new pass_cd_dce (m_ctxt); }
> -  void set_pass_param (unsigned n, bool param) final override
> -    {
> -      gcc_assert (n == 0 || n == 1);
> -      if (n == 0)
> -       update_address_taken_p = param;
> -      else if (n == 1)
> -       remove_unused_locals_p = param;
> -    }
> -  bool gate (function *) final override { return flag_tree_dce != 0; }
> -  unsigned int execute (function *) final override
> +  unsigned int execute (function *func) final override
>      {
> -      return (tree_ssa_cd_dce ()
> -             | (remove_unused_locals_p ? TODO_remove_unused_locals : 0)
> -             | (update_address_taken_p ? TODO_update_address_taken : 0));
> +      return execute_dce (func, /*aggressive=*/optimize >= 2);
>      }
>
> -private:
> -  bool update_address_taken_p;
> -  bool remove_unused_locals_p = false;
>  }; // class pass_cd_dce
>
>  } // anon namespace
> --
> 2.43.0
>
diff mbox series

Patch

diff --git a/gcc/tree-ssa-dce.cc b/gcc/tree-ssa-dce.cc
index 66612b5d575..3075459e25f 100644
--- a/gcc/tree-ssa-dce.cc
+++ b/gcc/tree-ssa-dce.cc
@@ -2057,19 +2057,6 @@  perform_tree_ssa_dce (bool aggressive)
   return todo;
 }
 
-/* Pass entry points.  */
-static unsigned int
-tree_ssa_dce (void)
-{
-  return perform_tree_ssa_dce (/*aggressive=*/false);
-}
-
-static unsigned int
-tree_ssa_cd_dce (void)
-{
-  return perform_tree_ssa_dce (/*aggressive=*/optimize >= 2);
-}
-
 namespace {
 
 const pass_data pass_data_dce =
@@ -2085,15 +2072,11 @@  const pass_data pass_data_dce =
   0, /* todo_flags_finish */
 };
 
-class pass_dce : public gimple_opt_pass
+class pass_dce_base : public gimple_opt_pass
 {
 public:
-  pass_dce (gcc::context *ctxt)
-    : gimple_opt_pass (pass_data_dce, ctxt), update_address_taken_p (false)
-  {}
-
   /* opt_pass methods: */
-  opt_pass * clone () final override { return new pass_dce (m_ctxt); }
+  bool gate (function *) final override { return flag_tree_dce != 0; }
   void set_pass_param (unsigned n, bool param) final override
     {
       gcc_assert (n == 0 || n == 1);
@@ -2102,17 +2085,38 @@  public:
       else if (n == 1)
 	remove_unused_locals_p = param;
     }
-  bool gate (function *) final override { return flag_tree_dce != 0; }
-  unsigned int execute (function *) final override
+
+protected:
+  pass_dce_base (const pass_data &data, gcc::context *ctxt)
+    : gimple_opt_pass (data, ctxt)
+  {}
+  unsigned int execute_dce (function *, bool aggressive)
     {
-      return (tree_ssa_dce ()
+      return (perform_tree_ssa_dce (aggressive)
 	      | (remove_unused_locals_p ? TODO_remove_unused_locals : 0)
 	      | (update_address_taken_p ? TODO_update_address_taken : 0));
     }
 
 private:
-  bool update_address_taken_p;
+  bool update_address_taken_p = false;
   bool remove_unused_locals_p = false;
+}; // class pass_dce_base
+
+
+class pass_dce : public pass_dce_base
+{
+public:
+  pass_dce (gcc::context *ctxt)
+    : pass_dce_base (pass_data_dce, ctxt)
+  {}
+
+  /* opt_pass methods: */
+  opt_pass * clone () final override { return new pass_dce (m_ctxt); }
+  unsigned int execute (function *func) final override
+    {
+      return execute_dce (func, /*aggressive=*/false);
+    }
+
 }; // class pass_dce
 
 } // anon namespace
@@ -2138,34 +2142,20 @@  const pass_data pass_data_cd_dce =
   0, /* todo_flags_finish */
 };
 
-class pass_cd_dce : public gimple_opt_pass
+class pass_cd_dce : public pass_dce_base
 {
 public:
   pass_cd_dce (gcc::context *ctxt)
-    : gimple_opt_pass (pass_data_cd_dce, ctxt), update_address_taken_p (false)
+    : pass_dce_base (pass_data_cd_dce, ctxt)
   {}
 
   /* opt_pass methods: */
   opt_pass * clone () final override { return new pass_cd_dce (m_ctxt); }
-  void set_pass_param (unsigned n, bool param) final override
-    {
-      gcc_assert (n == 0 || n == 1);
-      if (n == 0)
-	update_address_taken_p = param;
-      else if (n == 1)
-	remove_unused_locals_p = param;
-    }
-  bool gate (function *) final override { return flag_tree_dce != 0; }
-  unsigned int execute (function *) final override
+  unsigned int execute (function *func) final override
     {
-      return (tree_ssa_cd_dce ()
-	      | (remove_unused_locals_p ? TODO_remove_unused_locals : 0)
-	      | (update_address_taken_p ? TODO_update_address_taken : 0));
+      return execute_dce (func, /*aggressive=*/optimize >= 2);
     }
 
-private:
-  bool update_address_taken_p;
-  bool remove_unused_locals_p = false;
 }; // class pass_cd_dce
 
 } // anon namespace