aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload.c
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1998-05-14 00:44:02 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1998-05-14 01:44:02 +0100
commit029b38ff0437ff2ea5fc84c8e026d6f055727194 (patch)
tree051fe061feaa27120cdc1d7f7ca4ce4be1c132a8 /gcc/reload.c
parentf824910ea1f3cb4ec56581a1f752c0c777720d49 (diff)
downloadgcc-029b38ff0437ff2ea5fc84c8e026d6f055727194.zip
gcc-029b38ff0437ff2ea5fc84c8e026d6f055727194.tar.gz
gcc-029b38ff0437ff2ea5fc84c8e026d6f055727194.tar.bz2
reload.c (remove_replacements): New function.
* reload.c (remove_replacements): New function. * reload.h (remove_replacements): Declare. * reload1.c (choose_reload_regs): Disable some reloads that belong to inherited reloads. From-SVN: r19735
Diffstat (limited to 'gcc/reload.c')
-rw-r--r--gcc/reload.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index 7d7350e2..ef62ef9 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1506,6 +1506,21 @@ transfer_replacements (to, from)
replacements[i].what = to;
}
+/* Remove all replacements in reload FROM. */
+void
+remove_replacements (from)
+ int from;
+{
+ int i, j;
+
+ for (i = 0, j = 0; i < n_replacements; i++)
+ {
+ if (replacements[i].what == from)
+ continue;
+ replacements[j++] = replacements[i];
+ }
+}
+
/* If there is only one output reload, and it is not for an earlyclobber
operand, try to combine it with a (logically unrelated) input reload
to reduce the number of reload registers needed.