[LLVMbugs] [Bug 10066] New: Greedy allocator fails to fold a memory operand when spilling

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jun 2 08:33:56 PDT 2011


           Summary: Greedy allocator fails to fold a memory operand when
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Register Allocator
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: sergey.galanov at intel.com
                CC: llvmbugs at cs.uiuc.edu

Created an attachment (id=6676)
 --> (http://llvm.org/bugs/attachment.cgi?id=6676)
LLVM IR source


The code produced for the test in attachment is worse with the greedy allocator
than it was with the linear scan allocator (note that the test is compiled with
-disable-fp-elim option).

The test is a pair of nested loops. The outer loop counter (in vreg17) is
spilled on x86 but despite being used only once (for decrementing) stack slot
is not folded into the instruction. This happens because vreg17 is first split
into two registers (vreg54 and vreg53). Physical register is allocated for the
first one and the second one is spilled, so at that point it is not possible to
fold the memory operand unless it is somehow known that the two registers
originated from a common one.

Seems that greedy allocator is too greedy at splitting the intervals :) This
might not be a problem for a RISC architecture but it is not very good for

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