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]

Re: Unable to generate reloads


Joern Rennecke <amylaar@onetel.net.uk> writes:
> > testsuite/gcc.c-torture/compile/920625-1.c:279: Unable to generate reloads for:
> > (jump_insn 45 4975 5103 (parallel[ 
> >             (set (pc)
> >                 (if_then_else (ge (reg:SI 1217)
> >                         (const_int 0 [0x0]))
> >                     (label_ref 48)
> >                     (pc)))
> >             (set (reg/v:SI 30)
> >                 (reg:SI 1217))
> >         ] ) 68 {*move_and_skipsi} (nil)
> >     (expr_list:REG_DEAD (reg:SI 1217)
> >         (expr_list:REG_BR_PROB (const_int 8900 [0x22c4])
> >             (nil))))
> > How do I avoid this error?
> It depends.  How many GENERAL_REGS spill registers are available?

There are 16 GENERAL_REGS, and at the point of error, n_spills = 0.

> What are the allocations / equivalences for pseudos 30 and 1217,

reg_renumber[30] = -1
reg_renumber[1217] = -1
reg_equiv_mem[30] = (mem:SI (plus:SI (reg/f:SI 15) (const_int -312)))
reg_equiv_mem[1217] = (mem:SI (plus:SI (reg/f:SI 15) (const_int -16)))

(reg/f:SI 15) is the stack pointer.

> and what addressing modes are available to address them?

reg:SI, (plus:SI reg:SI const_int), and (mem:SI (plus:SI reg:SI const_int))
are all valid addresses when the const_int offset is small enough.

> Dou you need secondary reload registers and / or secondary memory?

No, all registers can be moved directly to/from memory and other
register.

> What are the values of the pertaining register elimination offsets
> at this point, if there are any?

reg_eliminate[0] =
{ from = 13, to = 15, initial_offset = -2216, can_eliminate = 1,
  can_eliminate_previous = 1, offset = -2216, previous_offset = -2216,
  ref_outside_mem = 0, from_frx = 0x3002a018, to_rtx = 0x3001a000 }

> P.S.:  if you have a HAVE_cc0 port, don't use that pattern.  It can't be
> made to work.

No, it's not a HAVE_cc0 port.


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