[Bug target/26778] [4.0/4.1/4.2 regression] GCC4 moves the result of a conditional block through inadequate registers

bonzini at gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Aug 7 08:12:00 GMT 2006



------- Comment #6 from bonzini at gnu dot org  2006-08-07 08:12 -------
Also, note that the problem is not only that SSE is used to store th.  Even if
we enable SSE2, we do not use the SSE register to do the thdb.l++ and instead
do this:

        movsd   %xmm2, -8(%ebp)
        movl    -8(%ebp), %eax
        movl    -4(%ebp), %edx
        addl    $1, %eax
        adcl    $0, %edx
        movl    %eax, -8(%ebp)
        movl    %edx, -4(%ebp)
        movsd   -8(%ebp), %xmm0

We'd need SRA for unions (using VIEW_CONVERT_EXPR) in order to do that.


-- 


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



More information about the Gcc-bugs mailing list