Skip to content
  1. Mar 02, 2016
  2. Mar 01, 2016
  3. Feb 29, 2016
    • Adam Nemet's avatar
      [LLE] Fix SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper with Polly · 83be06e5
      Adam Nemet authored
      We can actually have dependences between accesses with different
      underlying types.  Bail in this case.
      
      A test will follow shortly.
      
      llvm-svn: 262267
      83be06e5
    • Adam Nemet's avatar
      Enable LoopLoadElimination by default · dd9e637a
      Adam Nemet authored
      Summary:
      I re-benchmarked this and results are similar to original results in
      D13259:
      
      On ARM64:
        SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog -59.27%
        SingleSource/Benchmarks/Polybench/stencils/adi                   -19.78%
      
      On x86:
        SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog  -27.14%
      
      And of course the original ~20% gain on SPECint_2006/456.hmmer with Loop
      Distribution.
      
      In terms of compile time, there is ~5% increase on both
      SingleSource/Benchmarks/Misc/oourafft and
      SingleSource/Benchmarks/Linkpack/linkpack-pc.  These are both very tiny
      loop-intensive programs where SCEV computations dominates compile time.
      
      The reason that time spent in SCEV increases has to do with the design
      of the old pass manager.  If a transform pass does not preserve an
      analysis we *invalidate* the analysis even if there was *no*
      modification made by the transform pass.
      
      This means that currently we don't take advantage of LLE and LV sharing
      the same analysis (LAA) and unfortunately we recompute LAA *and* SCEV
      for LLE.
      
      (There should be a way to work around this limitation in the case of
      SCEV and LAA since both compute things on demand and internally cache
      their result.  Thus we could pretend that transform passes preserve
      these analyses and manually invalidate them upon actual modification.
      On the other hand the new pass manager is supposed to solve so I am not
      sure if this is worthwhile.)
      
      Reviewers: hfinkel, dberlin
      
      Subscribers: dberlin, reames, mssimpso, aemerson, joker.eph, llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D16300
      
      llvm-svn: 262250
      dd9e637a
    • Rong Xu's avatar
      Minor code cleanup. NFC · 9e926e8b
      Rong Xu authored
      llvm-svn: 262242
      9e926e8b
    • Dehao Chen's avatar
      Move discriminator assignment to the right place. · 939993ff
      Dehao Chen authored
      Summary: Now discriminator is assigned per-function instead of per-module.
      
      Reviewers: davidxl, dnovillo
      
      Subscribers: dblaikie, llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D17664
      
      llvm-svn: 262240
      939993ff
  4. Feb 28, 2016
  5. Feb 27, 2016
  6. Feb 26, 2016
  7. Feb 24, 2016
    • Anna Zaks's avatar
      [asan] Do not instrument globals in the special "LLVM" sections · 40148f17
      Anna Zaks authored
      llvm-svn: 261794
      40148f17
    • David Majnemer's avatar
      [SimplifyCFG] Use a more elegant solution than r261731 · ee0cbbbe
      David Majnemer authored
      The cleanupret instruction has an invariant that it's 'from' operand be
      a cleanuppad.  This invariant was violated when we removed a dead block
      which removed a cleanuppad leaving behind a cleanupret with an undef
      'from' operand.
      
      This was solved in r261731 by staving off the removal of the dead block
      to a later pass.
      
      However, it occured to me that we do not need to do this.
      Instead, we can simply avoid processing the cleanupret if it has an
      undef 'from' operand because we know that it will be removed soon.
      
      llvm-svn: 261754
      ee0cbbbe
    • Sanjay Patel's avatar
      [InstCombine] enable optimization of casted vector xor instructions · dbbaca0e
      Sanjay Patel authored
      This is part of the payoff for the refactoring in:
      http://reviews.llvm.org/rL261649
      http://reviews.llvm.org/rL261707
      
      In addition to removing a pile of duplicated code, the xor case was
      missing the optimization for vector types because it checked
      "SrcTy->isIntegerTy()" rather than "SrcTy->isIntOrIntVectorTy()"
      like 'and' and 'or' were already doing.
      
      This solves part of:
      https://llvm.org/bugs/show_bug.cgi?id=26702
      
      llvm-svn: 261750
      dbbaca0e
    • Artur Pilipenko's avatar
      NFC. Move isDereferenceable to Loads.h/cpp · 31bcca47
      Artur Pilipenko authored
      This is a part of the refactoring to unify isSafeToLoadUnconditionally and isDereferenceablePointer functions. In subsequent change I'm going to eliminate isDerferenceableAndAlignedPointer from Loads API, leaving isSafeToLoadSpecualtively the only function to check is load instruction can be speculated.   
      
      Reviewed By: hfinkel
      
      Differential Revision: http://reviews.llvm.org/D16180
      
      llvm-svn: 261736
      31bcca47
    • David Majnemer's avatar
      [SimplifyCFG] Do not blindly remove unreachable blocks · ec72e372
      David Majnemer authored
      DeleteDeadBlock was called indiscriminately, leading to cleanuprets with
      undef cleanuppad references.
      
      Instead, try to drain the BB of most of it's instructions if it is
      unreachable.  We can then remove the BB if it solely consists of a
      terminator (and maybe some phis).
      
      llvm-svn: 261731
      ec72e372
    • Sanjay Patel's avatar
      [InstCombine] refactor visitOr() to use foldCastedBitwiseLogic() · 75b4ae25
      Sanjay Patel authored
      Note: The 'and' case in foldCastedBitwiseLogic() is inheriting one extra
      check from the nearly identical 'or' case:
        if ((!isa<ICmpInst>(Cast0Src) || !isa<ICmpInst>(Cast1Src))
      
      But I'm not sure how to expose that difference in a regression test. 
      Without that check, the 'or' path will infinite loop on:
      test/Transforms/InstCombine/zext-or-icmp.ll
      because the zext-or-icmp fold is attempting a reverse transform.
      
      The refactoring should extend to the 'xor' case next to solve part of
      PR26702.
      
      llvm-svn: 261707
      75b4ae25
  8. Feb 23, 2016
Loading