From: Geoff Keating Date: Sun, 28 May 2000 01:06:11 +0000 (+0000) Subject: combine.c (subst): Honour CLASS_CANNOT_CHANGE_SIZE when substituting the REG in a... X-Git-Tag: prereleases/libstdc++-2.92~6140 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ed8afe3ab07e9ed5cd22900331946b0d19eb6a04;p=thirdparty%2Fgcc.git combine.c (subst): Honour CLASS_CANNOT_CHANGE_SIZE when substituting the REG in a (subreg:X (reg:Y... * combine.c (subst): Honour CLASS_CANNOT_CHANGE_SIZE when substituting the REG in a (subreg:X (reg:Y ...)). From-SVN: r34217 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a2d525367eac..f491f3c7edf9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-05-27 Geoff Keating + + * combine.c (subst): Honour CLASS_CANNOT_CHANGE_SIZE when + substituting the REG in a (subreg:X (reg:Y ...)). + 2000-05-28 Neil Booth * cpplex.c (_cpp_lex_line): Merge vertical space. Flag diff --git a/gcc/combine.c b/gcc/combine.c index c9d6a52f294c..8a14d806c68e 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3400,6 +3400,18 @@ subst (x, from, to, in_dest, unique_copy) ) 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++; }