Reload problem (PR 6104)

Jan Hubicka jh@suse.cz
Mon May 6 07:16:00 GMT 2002


Bernd,
I am just looking at the PR 6104 and it is reload issue.  What happends is
the following instruction:
(insn 781 779 783 (parallel[
            (set (subreg:SI (reg/v:DI 21 rxmm0 [189]) 4)
                (ior:SI (reg:SI 0 eax [194])
                    (const_int 2146435072 [0x7ff00000])))
            (clobber (reg:CC 17 flags))
        ] ) 310 {*iorsi_1} (insn_list 775 (nil))
    (expr_list:REG_UNUSED (reg:CC 17 flags)
        (expr_list:REG_DEAD (reg:SI 0 eax [194])
            (nil))))

(it the moment I think it is already bug that DI register got into XMM, I will
check it later, but we will need this working for 3.2 anyway).
There is need for relad in the subregged operand.
find_reloads decides to reload eax into the subreg, resulting in using
find_valid_class.  Find_valid_class returns INT_SSE_REGS and push_reload
(I don't quite understand what is happening here) and finally we die
in ix86_secondary_memory_needed, since we can't descide on the unified
class.

Why exactly reload is allocating the register?
Can you take a look, please?

Honza



More information about the Gcc-bugs mailing list