[LLVMbugs] [Bug 4544] New: regalloc problem with insert_subreg

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sun Jul 12 13:18:58 PDT 2009


           Summary: regalloc problem with insert_subreg
           Product: libraries
           Version: 1.0
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Common Code Generator Code
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: clattner at apple.com
                CC: llvmbugs at cs.uiuc.edu

It looks like regalloc is incorrectly updating machine instrs after coalescing.
 With the attached patch on the attached .bc file, I get:

$ llc bugpoint-reduced-simplified.bc -o - -print-machineinstrs
        %reg1039<def> = MOV32r0 %EFLAGS<imp-def>
        %reg1040<def> = IMPLICIT_DEF
        %reg1037<def> = INSERT_SUBREG %reg1040, %reg1039, 4
        %RSI<def> = MOV64rr %reg1037
        %RDX<def> = MOV64rr %reg1037
        %RCX<def> = MOV64rr %reg1037

The after regalloc:

        %ESI<def> = MOV32r0 %EFLAGS<imp-def,dead>
        %RDX<def> = MOV32ri 0
        %RCX<def> = MOV32ri 0
        %R8<def> = MOV64rr %RAX<kill>

The set of ESI seems fine.  The set of RDX/RCX are wrong (they should be

This smells like a simple remat problem, or an "is cheap as a move" problem of
some sort.  It would also be nice to use MOV32ri0 for EDX/ECX instead of
MOV32ri, but that's a micro optimization possible because the flags are dead.

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