Skip to content
  1. May 11, 2011
    • Evan Cheng's avatar
      Add a late optimization to BranchFolding that hoist common instruction sequences · 05fc35e2
      Evan Cheng authored
      at the start of basic blocks to their common predecessor. It's actually quite
      common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size
      benefit. e.g.
      
              pushq   %rax
              testl   %edi, %edi
              jne     LBB0_2
      ## BB#1:
              xorb    %al, %al
              popq    %rdx
              ret
      LBB0_2:
              xorb    %al, %al
              callq   _foo
              popq    %rdx
              ret
      
      =>
      
              pushq   %rax
              xorb    %al, %al
              testl   %edi, %edi
              je      LBB0_2
      ## BB#1:
              callq   _foo
      LBB0_2:
              popq    %rdx
              ret
      
      rdar://9145558
      
      llvm-svn: 131172
      05fc35e2
  2. May 10, 2011
  3. May 09, 2011
  4. May 08, 2011
    • Jakob Stoklund Olesen's avatar
      Remove an assertion to fix PR9872. · 89bd2ae5
      Jakob Stoklund Olesen authored
      It can happen that a live debug variable is the last use of a sub-register, and
      the register allocator will pick a larger register class for the virtual
      register.  If the allocated register doesn't support the sub-register index,
      just use %noreg for the debug variables instead of asserting.
      
      In PR9872, a debug variable ends up in the sub_8bit_hi part of a GR32_ABCD
      register. The register is split and one part is inflated to GR32 and assigned
      %ESI because there are no more normal uses of sub_8bit_hi.
      
      Since %ESI doesn't have that sub-register, substPhysReg asserted. Now it will
      simply insert a %noreg instead, and the debug variable will be marked
      unavailable in that range.
      
      We don't currently have a way of saying: !"value" is in bits 8-15 of %ESI, I
      don't know if DWARF even supports that.
      
      llvm-svn: 131073
      89bd2ae5
  5. May 06, 2011
  6. May 05, 2011
Loading