Hi there

i'm in the process of coding a GCC backend for a certain RISC-like architecture.
Its register architecture consists of an integer register file (32 regs) and two
additional hard regs that should be programmer visible. Accesses to these hard
regs are also emitted related to certain RTL patterns (divmoddi4 and udivmoddi4
for which these two hard regs should be written). Split 64-bit moves may or may
not use these regs as well.

I thought i had added the necessary information (new register classes, character
to match for the reg class) however i get the following error message:

"unable to find a register to spill in class"

Can i disable filling/spilling for this register class?

Further, the actual error occurs at reload.c:find_reloads().
The context is the following:

<------------------------------------------
  /* The operands don't meet the constraints.
     goal_alternative describes the alternative
     that we could reach by reloading the fewest operands.
     Reload so as to fit it.  */

  if (best == MAX_RECOG_OPERANDS * 2 + 600)
    {
      /* No alternative works with reloads??  */
      if (insn_code_number >= 0)
        fatal_insn ("unable to generate reloads for:", insn);
      error_for_asm (insn, "inconsistent operand constraints in an `asm'");
      /* Avoid further trouble with this insn.  */
      PATTERN (insn) = gen_rtx_USE (VOIDmode, const0_rtx);
      n_reloads = 0;
      return 0;
    }
<------------------------------------------

Thank you in advance

Nikolaos Kavvadias

Reply via email to