I am curious why spill_failure() in gcc/reload1.cc aborts the compiler.
static void
spill_failure (rtx_insn *insn, enum reg_class rclass)
{
if (asm_noperands (PATTERN (insn)) >= 0)
error_for_asm (insn, "cannot find a register in class %qs while "
"reloading %",
Rajkishore Barik wrote:
./mul_mdmd_md.c:343: error: unable to find a register to spill in class
âAD_REGSâ
Compile with -da, look at the .greg dump file, it will have a bunch of
messages saying "reloads for insn ...". Find the one for the insn that
is failing. Look at the .lreg dump to find the
> > (sign_extend:DI (reg/v:SI 149 [ M ])))
> > > (clobber (reg:CC 17 flags))
> > > (clobber (scratch:SI))
> > > ]) 82 {*extendsidi2_1} (nil)
> > > (expr_list:REG_UNUSED (scratch:SI)
> > > (expr_list:REG_UNUSED (
9 8 530 0 (parallel [
> > (set (reg:DI 232)
> > (sign_extend:DI (reg/v:SI 149 [ M ])))
> > (clobber (reg:CC 17 flags))
> > (clobber (scratch:SI))
> > ]) 82 {*extendsidi2_1} (nil)
> > (expr_list:REG_UNUSED (scratch:SI)
&g
:SI))
> ]) 82 {*extendsidi2_1} (nil)
> (expr_list:REG_UNUSED (scratch:SI)
> (expr_list:REG_UNUSED (reg:CC 17 flags)
> (nil
> ./mul_mdmd_md.c:343: internal compiler error: in spill_failure, at
> reload1.c:1885
What this basically says is that af
)
(expr_list:REG_UNUSED (scratch:SI)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil
./mul_mdmd_md.c:343: internal compiler error: in spill_failure, at
reload1.c:1885
regards,
Raj