Index: gcc/config/arm/arm.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.h,v retrieving revision 1.98.4.3 diff -u -d -p -r1.98.4.3 arm.h --- arm.h 2001/12/07 09:49:23 1.98.4.3 +++ arm.h 2002/01/17 19:24:55 @@ -1289,14 +1296,14 @@ enum reg_class if (GET_CODE (X) == PLUS \ && GET_MODE_SIZE (MODE) < 4 \ && GET_CODE (XEXP (X, 0)) == REG \ - && XEXP (X, 0) == stack_pointer_rtx \ && GET_CODE (XEXP (X, 1)) == CONST_INT \ - && ! THUMB_LEGITIMATE_OFFSET (MODE, INTVAL (XEXP (X, 1)))) \ + && ! (THUMB_REG_OK_FOR_INDEX_P (XEXP (X, 0)) \ + && THUMB_LEGITIMATE_OFFSET (MODE, INTVAL (XEXP (X, 1))))) \ { \ rtx orig_X = X; \ X = copy_rtx (X); \ push_reload (orig_X, NULL_RTX, &X, NULL_PTR, \ - BASE_REG_CLASS, \ + INDEX_REG_CLASS, \ Pmode, VOIDmode, 0, 0, OPNUM, TYPE); \ goto WIN; \ } \