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]

Reload problem (PR 6104)


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


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