https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124901

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |WAITING
         Resolution|WONTFIX                     |---

--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> ---
FTR: Adding *another* pass_cprop_hardreg after pass_reorder_blocks with:

--cut here--
diff --git a/gcc/passes.def b/gcc/passes.def
index cdddb87302f..b5c6e99974b 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -543,6 +543,7 @@ along with GCC; see the file COPYING3.  If not see
          NEXT_PASS (pass_cprop_hardreg);
          NEXT_PASS (pass_fast_rtl_dce);
          NEXT_PASS (pass_reorder_blocks);
+         NEXT_PASS (pass_cprop_hardreg);
          NEXT_PASS (pass_leaf_regs);
          NEXT_PASS (pass_split_before_sched2);
          NEXT_PASS (pass_sched2);
diff --git a/gcc/regcprop.cc b/gcc/regcprop.cc
index 2a9956353cc..806dc944b97 100644
--- a/gcc/regcprop.cc
+++ b/gcc/regcprop.cc
@@ -1358,6 +1358,7 @@ public:
   {}

   /* opt_pass methods: */
+  opt_pass *clone () override { return new pass_cprop_hardreg (m_ctxt); }
   bool gate (function *) final override
     {
       return (optimize > 0 && (flag_cprop_registers));
--cut here--

also shows some code size improvements with x86_64 default linux kernel:

$ size *.o
   text    data     bss     dec     hex filename
29378531        4929075  744820 35052426        216db8a vmlinux-add.o
29382751        4929075  744820 35056646        216ec06 vmlinux-baseline.o
29384459        4929075  744820 35058354        216f2b2 vmlinux-moved.o

where vmlinux-baseline.o is compiled with vanilla GCC, vmlinux-add.o is
compiled with additional pass_cprop_hardreg after pass_reorder_blocks, and
vmlinux-moved.o is compiled with pass_cprop_hardreg moved from its current
position to after pass_reorder_blocks.

The code size changes are:

vmlinux-moved.o: +1708 bytes
vmlinux-add.o  : -4220 bytes

So, it looks there is some benefit by adding another pass_cprop_hardreg after
pass_reorder_blocks.

Reply via email to