Skip to content
  1. Aug 17, 2011
  2. Jul 20, 2011
  3. Jun 23, 2011
  4. Jun 21, 2011
  5. 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
  6. May 17, 2011
  7. Apr 15, 2011
  8. Mar 30, 2011
  9. Jan 18, 2011
  10. Jan 14, 2011
  11. Jan 02, 2011
  12. 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
  13. Oct 08, 2010
  14. Aug 23, 2010
  15. Aug 06, 2010
  16. Jul 22, 2010
  17. Jul 09, 2010
  18. Mar 26, 2010
  19. Feb 13, 2010
  20. Dec 18, 2009
  21. Nov 01, 2009
  22. Oct 31, 2009
  23. Oct 25, 2009
  24. Sep 09, 2009
  25. Sep 08, 2009
    • Dan Gohman's avatar
      Re-apply r80926, with fixes: keep the domtree informed of new blocks · 3ddbc242
      Dan Gohman authored
      that get created during loop unswitching, and fix SplitBlockPredecessors'
      LCSSA updating code to create new PHIs instead of trying to just move
      existing ones.
      
      Also, optimize Loop::verifyLoop, since it gets called a lot. Use
      searches on a sorted list of blocks instead of calling the "contains"
      function, as is done in other places in the Loop class, since "contains"
      does a linear search. Also, don't call verifyLoop from LoopSimplify or
      LCSSA, as the PassManager is already calling verifyLoop as part of
      LoopInfo's verifyAnalysis.
      
      llvm-svn: 81221
      3ddbc242
  26. Sep 06, 2009
  27. Sep 03, 2009
  28. Aug 13, 2009
  29. Jul 14, 2009
Loading