instantiate_virtual_regs_1 trouble

Jan Hubicka jh@suse.cz
Mon Mar 18 13:07:00 GMT 2002


Hi,
building perl in x86_64 cross fails in instantiate_virtual_regs_1 on:
(insn 3845 3843 3846 (parallel[
            (set (mem/f:SI (plus:DI (reg/f:DI 54 virtual-stack-vars)
                        (const_int -236 [0xffffffffffffff14])) [0 a+0 S4 A32])
                (plus:SI (mem/f:SI (plus:DI (reg/f:DI 54 virtual-stack-vars)
                            (const_int -236 [0xffffffffffffff14])) [0 a+0 S4 A32])
                    (const_int 0 [0x0])))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (nil))

Since instantiate_virtual_regs first attempts to replace rtxs in source
and later in destination validating after each change, that of course
does not work.  I see following fixes:
1) revamp instantiate_virtual_regs to not do so, but this appears to be tricky
   as it appears to try multiple variant before giving up
2) disallow memory operands with virtual regs for binary operations in i386
3) relax the requirement that source and destination memory must match in
   RTL for for i386.

What do you think?
Honza



More information about the Gcc-bugs mailing list