diff options
author | Richard Stallman <rms@gnu.org> | 1993-03-06 20:09:57 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-03-06 20:09:57 +0000 |
commit | 210eed9496e21fe59e5c0cc963174643471a3007 (patch) | |
tree | ac300421ef9a82601f52d0586a6e9a4ffb050abf /gcc | |
parent | f75d38a795408286b9e9e341108382a0cd935432 (diff) | |
download | gcc-210eed9496e21fe59e5c0cc963174643471a3007.zip gcc-210eed9496e21fe59e5c0cc963174643471a3007.tar.gz gcc-210eed9496e21fe59e5c0cc963174643471a3007.tar.bz2 |
(choose_reload_regs): Handle SUBREG in reload_earlyclobber
when matching output reloads for setting reload_when_needed.
From-SVN: r3670
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reload1.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index cb3db79..15edd0b 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -4187,8 +4187,14 @@ choose_reload_regs (insn, avoid_return_reg) { /* But earlyclobber operands must stay as RELOAD_OTHER. */ for (i = 0; i < n_earlyclobbers; i++) - if (rtx_equal_p (reload_out[j], reload_earlyclobbers[i])) - break; + { + if (GET_CODE (reload_earlyclobbers[i]) == SUBREG + && reg_overlap_mentioned_for_reload_p (reload_out[j], + SUBREG_REG (reload_earlyclobbers[i]))) + break; + if (rtx_equal_p (reload_out[j], reload_earlyclobbers[i])) + break; + } if (i == n_earlyclobbers) reload_when_needed[j] = RELOAD_FOR_OUTPUT; } |