From: Eric Botcazou Date: Thu, 27 Oct 2011 18:19:54 +0000 (+0000) Subject: re PR rtl-optimization/46603 (gcc.dg/vect/slp-multitypes-2.c execution failure) X-Git-Tag: releases/gcc-4.7.0~2764 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2286a26f57ccfc760cc1582effeda293aae4ec00;p=thirdparty%2Fgcc.git re PR rtl-optimization/46603 (gcc.dg/vect/slp-multitypes-2.c execution failure) PR rtl-optimization/46603 PR bootstrap/50879 * reload.c (push_reload): In the out case, restore previous behavior for subregs that don't have word mode. From-SVN: r180572 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1672de956488..297192bd703b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-10-27 Eric Botcazou + + PR rtl-optimization/46603 + PR bootstrap/50879 + * reload.c (push_reload): In the out case, restore previous behavior + for subregs that don't have word mode. + 2011-10-27 Ian Lance Taylor * cppdefault.c: Undef NATIVE_SYSTEM_HEADER_DIR if diff --git a/gcc/reload.c b/gcc/reload.c index 307bc3a91efb..7dbc163da4d1 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1140,6 +1140,14 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, / UNITS_PER_WORD))) #endif )) + || (REG_P (SUBREG_REG (out)) + && REGNO (SUBREG_REG (out)) < FIRST_PSEUDO_REGISTER + /* The case of a word mode subreg + is handled differently in the following statement. */ + && ! (GET_MODE_SIZE (outmode) <= UNITS_PER_WORD + && (GET_MODE_SIZE (GET_MODE (SUBREG_REG (out))) + > UNITS_PER_WORD)) + && ! HARD_REGNO_MODE_OK (subreg_regno (out), outmode)) || (secondary_reload_class (0, rclass, outmode, out) != NO_REGS && (secondary_reload_class (0, rclass, GET_MODE (SUBREG_REG (out)), SUBREG_REG (out))