------- Additional Comments From uweigand at gcc dot gnu dot org 2004-11-25 18:33 ------- Now that RTH's validate_subreg patch is in, I guess the right fix for this problem might be to always return a SUBREG in simplify_gen_subreg unless that SUBREG is actually invalid.
What do you think of this patch: Index: simplify-rtx.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/simplify-rtx.c,v retrieving revision 1.211 diff -c -p -r1.211 simplify-rtx.c *** simplify-rtx.c 24 Nov 2004 00:09:03 -0000 1.211 --- simplify-rtx.c 25 Nov 2004 18:29:38 -0000 *************** simplify_gen_subreg (enum machine_mode o *** 3782,3792 **** if (newx) return newx; ! if (GET_CODE (op) == SUBREG || GET_MODE (op) == VOIDmode ! || (REG_P (op) && REGNO (op) < FIRST_PSEUDO_REGISTER)) ! return NULL_RTX; ! ! if (validate_subreg (outermode, innermode, op, byte)) return gen_rtx_SUBREG (outermode, op, byte); return NULL_RTX; --- 3782,3788 ---- if (newx) return newx; ! if (REG_P (op) && validate_subreg (outermode, innermode, op, byte)) return gen_rtx_SUBREG (outermode, op, byte); return NULL_RTX; (B.t.w. shouldn't validate_subreg reject non-REG inputs itself?) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18420