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: Reload bug


Jeffrey A Law <law@cygnus.com> writes:

|> I'll note this doesn't occur in the mainline tree, but I have no idea if that
|> is because the bug has actually been fixed or because we're just not triggering
|> the problem anymore.

I have been able to reproduce the bug with CVS-yesterday, but not right
now.  I think this is due to the ia32 merge, due to the change in the
subdi3 pattern.  With the yesterday's compiler the offending insn looked
like this before global alloc:

(insn 83 77 85 (parallel[ 
            (set (reg/v:DI 26)
                (minus:DI (reg:DI 31)
                    (reg:DI 38)))
            (clobber (scratch:SI))
        ] ) 215 {subdi3} (insn_list 77 (nil))
    (expr_list:REG_DEAD (reg:DI 38)
        (expr_list:REG_UNUSED (scratch:SI)
            (nil))))

with (reg:DI 31) being equivalent to the const_double.  Today I'm getting
this:

(insn 251 74 80 (set (reg/v:DI 28)
        (reg:DI 35)) 66 {*movdi_2} (nil)
    (nil))

(insn 80 251 82 (parallel [
            (set (reg/v:DI 28)
                (minus:DI (reg/v:DI 28)
                    (reg:DI 41)))
            (clobber (reg:CC 17 flags))
        ]) 179 {subdi3} (insn_list 74 (nil))
    (expr_list:REG_DEAD (reg:DI 41)
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (nil))))

where (reg:DI 35) now contains the const_double.

Andreas.

-- 
Andreas Schwab                                  "And now for something
schwab@suse.de                                   completely different."
SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg


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