yazdanbakhsh <[email protected]> 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