http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339



--- Comment #3 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-15 
10:17:19 UTC ---

Before regmove, both input operands die in insn 12:

   12: r67:DF=r66:DF+r64:DF

      REG_DEAD r66:DF

      REG_DEAD r64:DF



and because reg classes haven't been set up, r66 and r67 both have

GENERAL_REGS as their preferred register class so regmove doesn't see

that r64 and r67 share the same preferred register %xmm0:



Breakpoint 1, regmove_backward_pass () at ../../trunk/gcc/regmove.c:1088

1088                  if (dump_file)

(gdb) p reg_preferred_class (64) 

$10 = GENERAL_REGS

(gdb) p reg_preferred_class (66)

$11 = GENERAL_REGS

(gdb) p reg_preferred_class (67)

$12 = GENERAL_REGS

(gdb) p ira_set_pseudo_classes (true, dump_file)

$13 = void

(gdb) p reg_preferred_class (64)

$14 = SSE_FIRST_REG

(gdb) p reg_preferred_class (66)

$15 = SSE_REGS

(gdb) p reg_preferred_class (67)

$16 = SSE_FIRST_REG

(gdb)

Reply via email to