[LLVMbugs] [Bug 10614] New: Redundant load of address of array

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Aug 8 22:11:16 PDT 2011


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

           Summary: Redundant load of address of array
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: jmuizelaar at mozilla.com
                CC: llvmbugs at cs.uiuc.edu


The following code produces some a redundant leaq of the address of the array

#include <stdint.h>
static unsigned int const PowersOf10[] = 
{0, 1, 10, 100, 1000, 10000, 100000,
                1000000, 10000000, 100000000, 1000000000};
uint32_t BiggestPowerTen(uint32_t number,
                            unsigned int number_bits)
{ 
  unsigned int t = (number_bits);
  if (number<PowersOf10[t]) {
    t--;
    return PowersOf10[t];
  } else {
    return PowersOf10[t];
  }
}


        movl    %esi, %eax
        leaq    __ZL10PowersOf10(%rip), %rcx
        movl    (%rcx,%rax,4), %eax
        cmpl    %edi, %eax
        jbe     LBB0_2

        decl    %esi
        leaq    __ZL10PowersOf10(%rip), %rax
# we could just reuse $rcx here.
        movl    (%rax,%rsi,4), %eax
LBB0_2:                                 ## %return
        ret

gcc-4.2 does not have this problem.

-- 
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