[LLVMbugs] [Bug 10070] New: Needless sse spill/reload

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jun 2 21:19:13 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=10070

           Summary: Needless sse spill/reload
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Register Allocator
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: jmuizelaar at mozilla.com
                CC: llvmbugs at cs.uiuc.edu


The following code:

#include <math.h>
class gfxRect {
        double x;
        double y;
        double width;
        double height;

        void RoundOut();
};
void gfxRect::RoundOut()        {
                double x0 = floor(x);
                double y0 = floor(y);
                double x1 = ceil(x+width);
                double y1 = ceil(y+height);

                x = x0;
                y = y0;

                width = x1 - x0;
                height = y1 - y0;
        }

compiles to the following with a needless spill/reload at the end:

        movq    %rdi, %rbx
        movsd   (%rbx), %xmm0
        callq   _floor
        movsd   %xmm0, -32(%rbp)        ## 8-byte Spill
        movsd   8(%rbx), %xmm0
        callq   _floor
        movsd   %xmm0, -24(%rbp)        ## 8-byte Spill
        movsd   (%rbx), %xmm0
        addsd   16(%rbx), %xmm0
        callq   _ceil
        movsd   %xmm0, -16(%rbp)        ## 8-byte Spill
        movsd   8(%rbx), %xmm0
        addsd   24(%rbx), %xmm0
        callq   _ceil
        movsd   -32(%rbp), %xmm3        ## 8-byte Reload
        movsd   %xmm3, (%rbx)
        movsd   -24(%rbp), %xmm2        ## 8-byte Reload
        movsd   %xmm2, 8(%rbx)
        movsd   -16(%rbp), %xmm1        ## 8-byte Reload
        subsd   %xmm3, %xmm1

        movsd   %xmm1, -16(%rbp)        ## 8-byte Spill
        movsd   -16(%rbp), %xmm1        ## 8-byte Reload
here ----^
        movsd   %xmm1, 16(%rbx)
        subsd   %xmm2, %xmm0
        movsd   %xmm0, 24(%rbx)
        addq    $24, %rsp
        popq    %rbx
        popq    %rbp
        ret

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list