This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problem with ColdFire restricted addressing modes (mode5.6combination)


>>In order to fix this, you need to modify the 'U' constraint so it won't
>>accept things that won't match a 'U' constraint after they are reloaded,
>>namely, you have to stop accepting out of range constants.
>
>I modified the 'U' case to be:
>
>  (((C) == 'U')					\
>   ? ((GET_CODE (OP) == MEM 				\
>      && GET_CODE (XEXP (OP, 0)) == PLUS		\
>      && GET_CODE (XEXP (XEXP (OP, 0), 0)) == REG	\
>      && GET_CODE (XEXP (XEXP (OP, 0), 1)) == CONST_INT \
>      && (!TARGET_COLDFIRE || (INTVAL (XEXP (XEXP (OP, 0), 1)) >= -32768	\
>          && INTVAL (XEXP (XEXP (OP, 0), 1)) <= -32767)))	\
>	|| (GET_CODE (OP) == MEM			\
>	    && GET_CODE (XEXP (OP, 0)) == REG))		\

Shows what happesn when I try to code at 3am.  bviously the check for
the constant in range is broken.  I'm going back and trying it
again(with a +32767).

Film at 11.

-- 
Peter Barada
peter@the-baradas.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]