Skip to content
  1. Oct 20, 2011
  2. Oct 01, 2011
    • Andrew Trick's avatar
      Inlining and unrolling heuristics should be aware of free truncs. · f7656015
      Andrew Trick authored
      We want heuristics to be based on accurate data, but more importantly
      we don't want llvm to behave randomly. A benign trunc inserted by an
      upstream pass should not cause a wild swings in optimization
      level. See PR11034. It's a general problem with threshold-based
      heuristics, but we can make it less bad.
      
      llvm-svn: 140919
      f7656015
  3. Sep 02, 2011
    • Andrew Trick's avatar
      Enable SCEV-based unrolling by default. · 31b941a6
      Andrew Trick authored
      This changes loop unrolling to use the same mechanism for trip count
      computation as indvars. This is a stronger check that tends to unroll
      more loops. A very common side-effect is that many single iteration
      loops will be removed sooner. The real goal was simply to remove
      dependence on canonical IVs.
      
      x86 is break even.
      ARM performance changes to expect (+ is good):
      External/SPEC/CFP2000/183.equake/183.equake +13%
      SingleSource/Benchmarks/Dhrystone/fldry     +21%
      MultiSource/Applications/spiff/spiff         +3%
      SingleSource/Benchmarks/Stanford/Puzzle     -14%
      
      The Puzzle regression is actually an improvement in loop optimization
      that defeats GVN: rdar://problem/10065079.
      
      llvm-svn: 139009
      31b941a6
  4. Aug 12, 2011
    • Andrew Trick's avatar
      Allow loop unrolling to get known trip counts from ScalarEvolution. · 2b6860f0
      Andrew Trick authored
      SCEV unrolling can unroll loops with arbitrary induction variables. It
      is a prerequisite for -disable-iv-rewrite performance. It is also
      easily handles loops of arbitrary structure including multiple exits
      and is generally more robust.
      
      This is under a temporary option to avoid affecting default
      behavior for the next couple of weeks. It is needed so that I can
      checkin unit tests for updateUnloop.
      
      llvm-svn: 137384
      2b6860f0
  5. Aug 10, 2011
  6. Jul 23, 2011
  7. Apr 14, 2011
  8. Apr 13, 2011
  9. Jan 17, 2011
  10. Jan 11, 2011
  11. Jan 02, 2011
  12. Oct 19, 2010
    • Owen Anderson's avatar
      Passes do not need to recursively initialize passes that they preserve, if · a4fefc19
      Owen Anderson authored
      they do not also require them.  This allows us to reduce inter-pass linkage
      dependencies.
      
      llvm-svn: 116854
      a4fefc19
    • Owen Anderson's avatar
      Get rid of static constructors for pass registration. Instead, every pass... · 6c18d1aa
      Owen Anderson authored
      Get rid of static constructors for pass registration.  Instead, every pass exposes an initializeMyPassFunction(), which
      must be called in the pass's constructor.  This function uses static dependency declarations to recursively initialize
      the pass's dependencies.
      
      Clients that only create passes through the createFooPass() APIs will require no changes.  Clients that want to use the
      CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
      before parsing commandline arguments.
      
      I have tested this with all standard configurations of clang and llvm-gcc on Darwin.  It is possible that there are problems
      with the static dependencies that will only be visible with non-standard options.  If you encounter any crash in pass
      registration/creation, please send the testcase to me directly.
      
      llvm-svn: 116820
      6c18d1aa
  13. Oct 12, 2010
  14. Oct 08, 2010
  15. Sep 29, 2010
  16. Sep 28, 2010
  17. Sep 10, 2010
  18. Sep 09, 2010
  19. Sep 08, 2010
  20. Aug 29, 2010
  21. Aug 06, 2010
  22. Aug 04, 2010
  23. Jul 26, 2010
    • Dan Gohman's avatar
      Remove LCSSA's bogus dependence on LoopSimplify and LoopSimplify's bogus · 0141c13b
      Dan Gohman authored
      dependence on DominanceFrontier. Instead, add an explicit DominanceFrontier
      pass in StandardPasses.h to ensure that it gets scheduled at the right
      time.
      
      Declare that loop unrolling preserves ScalarEvolution, and shuffle some
      getAnalysisUsages.
      
      This eliminates one LoopSimplify and one LCCSA run in the standard
      compile opts sequence.
      
      llvm-svn: 109413
      0141c13b
  24. Jul 22, 2010
  25. Mar 10, 2010
  26. Feb 06, 2010
  27. Jan 05, 2010
  28. Oct 31, 2009
Loading