[LLVMbugs] [Bug 943] NEW: Too much spill code generated after loop unrolling

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Wed Oct 11 16:48:44 PDT 2006


           Summary: Too much spill code generated after loop unrolling
           Product: libraries
           Version: trunk
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: isanbard at gmail.com

This code:

int value(uint64 b1, uint64 b2)                                                                                   
  int i, j, k;                                                                                                    
  int value = 0;                                                                                                  
  for (k = 0; k < 2; k++)                                                                                         
    for (i = 0; i < 6; i++)                                                                                       
      for (j = 0; j < 2; j++)                                                                                     
        if ((b2 & 0xf << (j + i * 6)) == 0xf << (j + i * 6))                                                      
          value += 1000;                                                                                          
  return value;                                                                                                   

generates too many unnecessary spills/reloads when rerun through the optimizer (at -O2). See "***" 

LBB1_1: #bb17.preheader                                                                                           
        movl $15, %eax                                                                                            
***     movb 39(%esp), %cl                                                                                        
        movl %eax, %edx                                                                                           
        shll %cl, %edx                                                                                            
***     movb 39(%esp), %cl                                                                                        
        incb %cl                                                                                                  
        shll %cl, %eax                                                                                            
        movl %edx, %ecx                                                                                           

The result is that the loop will run slower than if optimizations were turned on only once.

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

More information about the llvm-bugs mailing list