Skip to content
  1. Jun 21, 2011
    • Andrew Trick's avatar
      indvars -disable-iv-rewrite: Adds support for eliminating identity · 69d4452f
      Andrew Trick authored
      ops.
      
      This is a rewrite of the IV simplification algorithm used by
      -disable-iv-rewrite. To avoid perturbing the default mode, I
      temporarily split the driver and created SimplifyIVUsersNoRewrite. The
      idea is to avoid doing opcode/pattern matching inside
      IndVarSimplify. SCEV already does it. We want to optimize with the
      full generality of SCEV, but optimize def-use chains top down on-demand rather
      than rewriting the entire expression bottom-up. This was easy to do
      for operations that SCEV can prove are identity function. So we're now
      eliminating bitmasks and zero extends this way.
      
      A result of this rewrite is that indvars -disable-iv-rewrite no longer
      requires IVUsers.
      
      llvm-svn: 133502
      69d4452f
    • Chad Rosier's avatar
      Revert r133435 and r133449 to appease buildbots. · 184f3b37
      Chad Rosier authored
      llvm-svn: 133499
      184f3b37
    • Dan Gohman's avatar
      Completely short-circuit out ARC optimization if the ARC runtime · ceaac7cb
      Dan Gohman authored
      functions do not appear in the module.
      
      llvm-svn: 133478
      ceaac7cb
  2. Jun 20, 2011
    • Jay Foad's avatar
      Change how PHINodes store their operands. · e03c05c3
      Jay Foad authored
      Change PHINodes to store simple pointers to their incoming basic blocks,
      instead of full-blown Uses.
      
      Note that this loses an optimization in SplitCriticalEdge(), because we
      can no longer walk the use list of a BasicBlock to find phi nodes. See
      the comment I removed starting "However, the foreach loop is slow for
      blocks with lots of predecessors".
      
      Extend replaceAllUsesWith() on a BasicBlock to also update any phi
      nodes in the block's successors. This mimics what would have happened
      when PHINodes were proper Users of their incoming blocks. (Note that
      this only works if OldBB->replaceAllUsesWith(NewBB) is called when
      OldBB still has a terminator instruction, so it still has some
      successors.)
      
      llvm-svn: 133435
      e03c05c3
    • Jay Foad's avatar
      Make better use of the PHINode API. · 372ad64b
      Jay Foad authored
      Change various bits of code to make better use of the existing PHINode
      API, to insulate them from forthcoming changes in how PHINodes store
      their operands.
      
      llvm-svn: 133434
      372ad64b
    • Chris Lattner's avatar
      Revamp the "ConstantStruct::get" methods. Previously, these were scattered · cc19efaa
      Chris Lattner authored
      all over the place in different styles and variants.  Standardize on two
      preferred entrypoints: one that takes a StructType and ArrayRef, and one that
      takes StructType and varargs.
      
      In cases where there isn't a struct type convenient, we now add a
      ConstantStruct::getAnon method (whose name will make more sense after a few
      more patches land).  
      
      It would be "really really nice" if the ConstantStruct::get and 
      ConstantVector::get methods didn't make temporary std::vectors.
      
      llvm-svn: 133412
      cc19efaa
  3. Jun 19, 2011
  4. Jun 18, 2011
  5. Jun 17, 2011
  6. Jun 16, 2011
  7. Jun 15, 2011
  8. Jun 14, 2011
  9. Jun 13, 2011
  10. Jun 09, 2011
Loading