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: Question about Machine Description


yazdanbakhsh <amir.yazdanbakhsh@gmail.com> writes:

> I'm working with GCC 2.7.

I think I see your problem.


> I think, It doesn't support define_predict.
> I define a c function in the mips.c file and add the following lines:
>
> int
> new_arith_operand (op, mode)
>      rtx op;
>      enum machine_mode mode;
> {
>   if (GET_CODE (op) == CONST_INT)
> 	if(NEW_INT_UNSIGNED (op))
> 	    return TRUE;
> 	else
> 	    return FALSE;
>
>   return register_operand (op, mode);
> }
>
> I use the name of this function to check the value of the input operand.
> When I compile the gcc the following error happens:
>
> ./libgcc2.c: In function `__divdi3':
> ./libgcc2.c:669: internal error--unrecognizable insn:
> (insn 787 786 780 (set (reg:SI 104)
>         (ior:SI (reg:SI 104)
>             (const_int 65535))) -1 (insn_list 786 (nil))
>     (expr_list:REG_EQUAL (const_int 16777215)
>         (nil)))

Make sure your constraint characters are consistent with your
predicate.  If your constraint has an 'i', then reload won't know that
it needs to push the out-of-range constant into a register.

Ian


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