------- Additional Comments From uweigand at gcc dot gnu dot org 2004-10-25 21:04 ------- well, as pointed out by David you do need in addition the change I described in comment #20.
If you prefer a patch: Index: gcc/recog.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/recog.c,v retrieving revision 1.211 diff -c -p -r1.211 recog.c *** gcc/recog.c 28 Sep 2004 07:59:48 -0000 1.211 --- gcc/recog.c 25 Oct 2004 21:02:03 -0000 *************** general_operand (rtx op, enum machine_mo *** 937,943 **** #ifdef INSN_SCHEDULING /* On machines that have insn scheduling, we want all memory reference to be explicit, so outlaw paradoxical SUBREGs. */ ! if (MEM_P (sub) && GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (sub))) return 0; #endif --- 937,943 ---- #ifdef INSN_SCHEDULING /* On machines that have insn scheduling, we want all memory reference to be explicit, so outlaw paradoxical SUBREGs. */ ! if (!reload_completed && MEM_P (sub) && GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (sub))) return 0; #endif -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15286