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

--- Comment #8 from Mikael Pettersson <mikpe at it dot uu.se> 2012-02-19 
17:43:07 UTC ---
The movss instructions were eliminated on trunk by Vladimir Makarov's "patch to
solve recent SPEC2000 degradation" in r178019:
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01954.html
http://gcc.gnu.org/ml/gcc-cvs/2011-08/msg01034.html

The code generation change at that point is:

--- pr42961.s-r178018   2012-02-19 18:22:46.000000000 +0100
+++ pr42961.s-r178019   2012-02-19 18:17:07.000000000 +0100
@@ -10,18 +10,17 @@
        ucomiss %xmm2, %xmm2
        jp      .L7
        jne     .L7
-       movss   %xmm1, -4(%rsp)
 .L2:
        movl    f(%rip), %eax
        testl   %eax, %eax
        je      .L4
-       movss   -4(%rsp), %xmm2
+       movaps  %xmm1, %xmm2
 .L4:
        movaps  %xmm2, %xmm0
        ret
 .L7:
        movaps  %xmm1, %xmm2
-       movss   %xmm0, -4(%rsp)
+       movaps  %xmm0, %xmm1
        jmp     .L2
        .cfi_endproc
 .LFE0:

Reply via email to