Skip to content
  • Jakob Stoklund Olesen's avatar
    Allow coalescing with reserved physregs in certain cases: · 2e853965
    Jakob Stoklund Olesen authored
    When a virtual register has a single value that is defined as a copy of a
    reserved register, permit that copy to be joined. These virtual register are
    usually copies of the stack pointer:
    
      %vreg75<def> = COPY %ESP; GR32:%vreg75
      MOV32mr %vreg75, 1, %noreg, 0, %noreg, %vreg74<kill>
      MOV32mi %vreg75, 1, %noreg, 8, %noreg, 0
      MOV32mi %vreg75<kill>, 1, %noreg, 4, %noreg, 0
      CALLpcrel32 ...
    
    Coalescing these virtual registers early decreases register pressure.
    Previously, they were coalesced by RALinScan::attemptTrivialCoalescing after
    register allocation was completed.
    
    The lower register pressure causes the mcinst-lowering-cmp0.ll test case to fail
    because it depends on linear scan spilling a particular register.
    
    I am deleting 2008-08-05-SpillerBug.ll because it is counting the number of
    instructions emitted, and its revision history shows the 'correct' count being
    edited many times.
    
    llvm-svn: 128845
    2e853965
Loading