substituting the REG in a (subreg:X (reg:Y ...)).
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34217
138bc75d-0d04-0410-961f-
82ee72b054a4
+2000-05-27 Geoff Keating <geoffk@cygnus.com>
+
+ * combine.c (subst): Honour CLASS_CANNOT_CHANGE_SIZE when
+ substituting the REG in a (subreg:X (reg:Y ...)).
+
2000-05-28 Neil Booth <NeilB@earthling.net>
* cpplex.c (_cpp_lex_line): Merge vertical space. Flag
)
return gen_rtx_CLOBBER (VOIDmode, const0_rtx);
+#ifdef CLASS_CANNOT_CHANGE_SIZE
+ if (code == SUBREG
+ && GET_CODE (to) == REG
+ && REGNO (to) < FIRST_PSEUDO_REGISTER
+ && (TEST_HARD_REG_BIT
+ (reg_class_contents[(int) CLASS_CANNOT_CHANGE_SIZE],
+ REGNO (to)))
+ && (GET_MODE_BITSIZE (GET_MODE (to))
+ != GET_MODE_BITSIZE (GET_MODE (x))))
+ return gen_rtx_CLOBBER (VOIDmode, const0_rtx);
+#endif
+
new = (unique_copy && n_occurrences ? copy_rtx (to) : to);
n_occurrences++;
}