This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Reload problem (PR 6104)
- From: Jan Hubicka <jh at suse dot cz>
- To: bernds at redhat dot com, gcc-bugs at gcc dot gnu dot org
- Date: Mon, 6 May 2002 16:16:06 +0200
- Subject: 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