On Sat, May 21, 2005 at 10:46:19AM +0200, Eric Botcazou wrote:
> We have as initial RTL:
> 
> (insn 35 34 36 1 (set (mem/i:TF (plus:DI (reg/f:DI 103 virtual-stack-vars)
>                 (const_int -5120 [0xffffffffffffec00])) [0 S16 A128])
>         (reg:TF 110 [ D.1221 ])) -1 (nil)
>     (nil))
> 
> and instantiate_virtual_regs_in_insn invokes extract_insn on it.  Previously 
> the instantiate_virtual_regs machinery (instantiate_virtual_regs_1) would 
> have detected that the insn is not valid.

The new implementation of instantiate_virtual_regs requires that the 
insn be valid *before* instantiation.  When you see something like 
this it means there's a bug in the rtl expanders.

The bug is in sparc_emit_float_lib_cmp,

5807              slot0 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode), 0);
5808              emit_insn (gen_rtx_SET (VOIDmode, slot0, x));

You have to call validize_mem there.


r~

Reply via email to