aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-11-15 00:20:51 +0000
committerRichard Stallman <rms@gnu.org>1993-11-15 00:20:51 +0000
commit0ba9317ecc6d0bed7027eb52e45cfcf070433527 (patch)
treebf36f5e311493cc1285b60de67431157d9196224 /gcc
parentb037a230c51759893d294e5e82bce98e199c59c1 (diff)
downloadgcc-0ba9317ecc6d0bed7027eb52e45cfcf070433527.zip
gcc-0ba9317ecc6d0bed7027eb52e45cfcf070433527.tar.gz
gcc-0ba9317ecc6d0bed7027eb52e45cfcf070433527.tar.bz2
(push_reload): Allow RELOAD_FOR_INPUT with a secondary
reload the same class as the input if the modes differ. From-SVN: r6089
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reload.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index af4ff98..2c03164 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1019,9 +1019,14 @@ push_reload (in, out, inloc, outloc, class,
The convention is that secondary input reloads are valid only if
the secondary_class is different from class. If you have such
a case, you can not use secondary reloads, you must work around
- the problem some other way. */
+ the problem some other way.
- if (type == RELOAD_FOR_INPUT && secondary_class == class)
+ Allow this when secondary_mode is not inmode and assume that
+ the generated code handles this case (it does on the Alpha, which
+ is the only place this currently happens). */
+
+ if (type == RELOAD_FOR_INPUT && secondary_class == class
+ && secondary_mode == inmode)
abort ();
/* If we need a tertiary reload, see if we have one we can reuse