Skip to content

Commit 6916639

Browse files
committed
gcse: Skip hardreg pre when the hardreg is never live [PR121095]
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 live 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/121095 gcc/ChangeLog: * gcse.cc (execute_hardreg_pre): Skip if the hardreg which is never live. Signed-off-by: Andrew Pinski <[email protected]>
1 parent 2954038 commit 6916639

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

gcc/gcse.cc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4238,8 +4238,15 @@ execute_hardreg_pre (void)
42384238
{
42394239
int changed;
42404240
current_hardreg_regno = regnos[i];
4241+
if (!df_regs_ever_live_p (current_hardreg_regno))
4242+
{
4243+
if (dump_file)
4244+
fprintf (dump_file, "Skipping hardreg PRE for regno %d, which is never live\n",
4245+
current_hardreg_regno);
4246+
continue;
4247+
}
42414248
if (dump_file)
4242-
fprintf(dump_file, "Entering hardreg PRE for regno %d\n",
4249+
fprintf (dump_file, "Entering hardreg PRE for regno %d\n",
42434250
current_hardreg_regno);
42444251
delete_unreachable_blocks ();
42454252
df_analyze ();

0 commit comments

Comments
 (0)