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~