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.