Skip to content
  1. Apr 30, 2012
    • Bill Wendling's avatar
      Second attempt at PR12573: · bf4b9afb
      Bill Wendling authored
      Allow the "SplitCriticalEdge" function to split the edge to a landing pad. If
      the pass is *sure* that it thinks it knows what it's doing, then it may go ahead
      and specify that the landing pad can have its critical edge split. The loop
      unswitch pass is one of these passes. It will split the critical edges of all
      edges coming from a loop to a landing pad not within the loop. Doing so will
      retain important loop analysis information, such as loop simplify.
      
      llvm-svn: 155817
      bf4b9afb
    • Bill Wendling's avatar
      Use an ArrayRef instead of explicit vector type. · 325e6cd9
      Bill Wendling authored
      llvm-svn: 155816
      325e6cd9
  2. Dec 09, 2011
  3. Oct 04, 2011
  4. Sep 21, 2011
    • Bill Wendling's avatar
      Relax this condition. · a6e1c51e
      Bill Wendling authored
      Some passes require breaking critical edges before they're called. Don't
      segfault because of that.
      
      llvm-svn: 140196
      a6e1c51e
  5. Aug 17, 2011
  6. Jul 20, 2011
  7. Jun 23, 2011
  8. Jun 21, 2011
  9. 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
  10. May 17, 2011
  11. Apr 15, 2011
  12. Mar 30, 2011
  13. Jan 18, 2011
  14. Jan 14, 2011
  15. Jan 02, 2011
  16. Oct 19, 2010
    • 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
  17. Oct 08, 2010
  18. Aug 23, 2010
  19. Aug 06, 2010
  20. Jul 22, 2010
  21. Jul 09, 2010
  22. Mar 26, 2010
  23. Feb 13, 2010
  24. Dec 18, 2009
  25. Nov 01, 2009
  26. Oct 31, 2009
  27. Oct 25, 2009
  28. Sep 09, 2009
    • Dan Gohman's avatar
      Fix SplitCriticalEdge to properly update LCSSA form when splitting a · ec4557f3
      Dan Gohman authored
      loop exit edge -- new PHIs may be needed not only for the additional
      splits that are made to preserve LoopSimplify form, but also for the
      original split. Factor out the code that inserts new PHIs so that it
      can be used for both. Remove LoopRotation.cpp's code for manually
      updating LCSSA form, as it is now redundant. This fixes PR4934.
      
      llvm-svn: 81363
      ec4557f3
Loading