aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir N. Makarov <vmakarov@redhat.com>2023-09-28 11:53:51 -0400
committerVladimir N. Makarov <vmakarov@redhat.com>2023-09-28 11:57:45 -0400
commit8552dcd8e4448c02fe230662093756b75dd94399 (patch)
treeaa2c4017e437000ad2f2f39237d9db44eb71214a /gcc
parentd8b56c95782aeeee79ec40932ca88d00fd9f2ee2 (diff)
downloadgcc-8552dcd8e4448c02fe230662093756b75dd94399.zip
gcc-8552dcd8e4448c02fe230662093756b75dd94399.tar.gz
gcc-8552dcd8e4448c02fe230662093756b75dd94399.tar.bz2
Revert "[RA]: Improve cost calculation of pseudos with equivalences"
This reverts commit 3c834d85f2ec42c60995c2b678196a06cb744959. Although the patch improves x86-64 specfp2007, it also results in performance and code size regression on different targets and new GCC testsuite failures on tests expecting a specific output.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ira-costs.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ira-costs.cc b/gcc/ira-costs.cc
index 8c93ace..d9e700e 100644
--- a/gcc/ira-costs.cc
+++ b/gcc/ira-costs.cc
@@ -1947,8 +1947,15 @@ find_costs_and_classes (FILE *dump_file)
}
if (i >= first_moveable_pseudo && i < last_moveable_pseudo)
i_mem_cost = 0;
- else
- i_mem_cost -= equiv_savings;
+ else if (equiv_savings < 0)
+ i_mem_cost = -equiv_savings;
+ else if (equiv_savings > 0)
+ {
+ i_mem_cost = 0;
+ for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+ i_costs[k] += equiv_savings;
+ }
+
best_cost = (1 << (HOST_BITS_PER_INT - 2)) - 1;
best = ALL_REGS;
alt_class = NO_REGS;