Skip to content
  1. Jun 08, 2012
    • Nuno Lopes's avatar
      BoundsChecking: add support for ConstantPointerNull. fixes a bunch of... · 4b68c1da
      Nuno Lopes authored
      BoundsChecking: add support for ConstantPointerNull. fixes a bunch of instrumentation failures in loops with reallocs
      
      llvm-svn: 158210
      4b68c1da
    • Hal Finkel's avatar
      Disable the PPC CTR-Loops pass by default. · 821e0012
      Hal Finkel authored
      The pass itself works well, but the something in the Machine* infrastructure
      does not understand terminators which define registers. Without the ability
      to use the block-placement pass, etc. this causes performance regressions (and
      so is turned off by default). Turning off the analysis turns off the problems
      with the Machine* infrastructure.
      
      llvm-svn: 158206
      821e0012
    • Hal Finkel's avatar
      Fix a bug in the new PPC CTR-Loops pass. · 8b01503e
      Hal Finkel authored
      The code which tests for an induction operation cannot assume that any
      ADDI instruction will have a register operand because the operand could
      also be a frame index; for example:
          %vreg16<def> = ADDI8 <fi#0>, 0; G8RC:%vreg16
      
      llvm-svn: 158205
      8b01503e
    • Hal Finkel's avatar
      Add the PPCCTRLoops pass: a PPC machine-code-level optimization pass to form... · 96c2d4d9
      Hal Finkel authored
      Add the PPCCTRLoops pass: a PPC machine-code-level optimization pass to form CTR-based loop branching code.
      
      This pass is derived from the Hexagon HardwareLoops pass. The only significant enhancement over the Hexagon
      pass is that PPCCTRLoops will also attempt to delete the replaced add and compare operations if they are
      no longer otherwise used. Also, invalid preheader DebugLoc is not used.
      
      llvm-svn: 158204
      96c2d4d9
    • Duncan Sands's avatar
      Revert commit 158073 while waiting for a fix. The issue is that reassociate · 9a5cf922
      Duncan Sands authored
      can move instructions within the instruction list.  If the instruction just
      happens to be the one the basic block iterator is pointing to, and it is
      moved to a different basic block, then we get into an infinite loop due to
      the iterator running off the end of the basic block (for some reason this
      doesn't fire any assertions).  Original commit message:
      
      Grab-bag of reassociate tweaks.  Unify handling of dead instructions and
      instructions to reoptimize.  Exploit this to more systematically eliminate
      dead instructions (this isn't very useful in practice but is convenient for
      analysing some testcase I am working on).  No need for WeakVH any more: use
      an AssertingVH instead.
      
      llvm-svn: 158199
      9a5cf922
    • Manman Ren's avatar
      X86: optimize generated code for integer ABS · 2cdc8afc
      Manman Ren authored
      This patch will generate the following for integer ABS:
            movl    %edi, %eax
            negl    %eax
            cmovll  %edi, %eax
      INSTEAD OF
            movl    %edi, %ecx
            sarl    $31, %ecx
            leal    (%rdi,%rcx), %eax
            xorl    %ecx, %eax
      
      There exists a target-independent DAG combine for integer ABS, which converts
      integer ABS to sar+add+xor. For X86, we match this pattern back to neg+cmov. 
      This is implemented in PerformXorCombine.
      
      rdar://10695237
      
      llvm-svn: 158175
      2cdc8afc
  2. Jun 07, 2012
  3. Jun 06, 2012
  4. Jun 05, 2012
Loading