diff options
author | Richard Stallman <rms@gnu.org> | 1992-11-27 23:52:02 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-11-27 23:52:02 +0000 |
commit | 5aa14feece79853511c91875f7d04f12e597bad1 (patch) | |
tree | 5bc8437c79bc7f7c6fc348cb875a6f41eae71e69 | |
parent | 33f3c4c086412f634fc1f7dd22b50a162c09a0a1 (diff) | |
download | gcc-5aa14feece79853511c91875f7d04f12e597bad1.zip gcc-5aa14feece79853511c91875f7d04f12e597bad1.tar.gz gcc-5aa14feece79853511c91875f7d04f12e597bad1.tar.bz2 |
(find_reloads) [SMALL_REGISTER_CLASSES]:
Don't use preferred_class for a multiword register.
From-SVN: r2815
-rw-r--r-- | gcc/reload.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index c4f46bf..d440eeb 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -2685,11 +2685,18 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) Don't bother with this if this alternative will accept this operand. + Don't do this for a multiword operand, if + we have to worry about small classes, because making reg groups + harder to allocate is asking for trouble. + Don't do this if the preferred class has only one register because we might otherwise exhaust the class. */ if (! win && this_alternative[i] != (int) NO_REGS +#ifdef SMALL_REGISTER_CLASSES + && GET_MODE_SIZE (operand_mode[i]) <= UNITS_PER_WORD +#endif && reg_class_size[(int) preferred_class[i]] > 1) { if (! reg_class_subset_p (this_alternative[i], |