r15-6789-ge7f98d9603808b added a new RTL pass for hardreg PRE for the hard 
register
of FPM_REGNUM, this pass could get expensive if you have a large number of 
basic blocks
and the hard register was never alive so it does nothing in the end.
In the aarch64 case, FPM_REGNUM is only used for FP8 related code so it has a 
high probability
of not being used. So skipping the pass for that register can improve both 
compile time and memory
usage.

Build and tested for aarch64-linux-gnu.

        PR middle-end/PR121095
gcc/ChangeLog:

        * gcse.cc (execute_hardreg_pre): Skip if the hardreg is never alive.

Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
---
 gcc/gcse.cc | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/gcc/gcse.cc b/gcc/gcse.cc
index 96aae0e1718..6eddffcdba8 100644
--- a/gcc/gcse.cc
+++ b/gcc/gcse.cc
@@ -4238,8 +4238,15 @@ execute_hardreg_pre (void)
     {
       int changed;
       current_hardreg_regno = regnos[i];
+      if (!df_regs_ever_live_p (current_hardreg_regno))
+       {
+         if (dump_file)
+           fprintf (dump_file, "Skipping hardreg PRE for regno %d never 
alive\n",
+                   current_hardreg_regno);
+         continue;
+       }
       if (dump_file)
-       fprintf(dump_file, "Entering hardreg PRE for regno %d\n",
+       fprintf (dump_file, "Entering hardreg PRE for regno %d\n",
                current_hardreg_regno);
       delete_unreachable_blocks ();
       df_analyze ();
-- 
2.43.0

Reply via email to