This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

instantiate_virtual_regs_1 trouble


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


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