Skip to content
  1. Feb 05, 2007
  2. Aug 27, 2006
  3. Jun 29, 2006
  4. Apr 27, 2006
  5. Nov 18, 2005
  6. Aug 05, 2005
  7. Jul 27, 2005
  8. Jun 30, 2005
  9. Apr 22, 2005
  10. Nov 30, 2004
  11. Oct 18, 2004
  12. Oct 17, 2004
  13. Oct 16, 2004
  14. Sep 19, 2004
  15. Sep 18, 2004
  16. Sep 15, 2004
  17. Sep 03, 2004
  18. Sep 02, 2004
    • Reid Spencer's avatar
      Changes For Bug 352 · 7c16caa3
      Reid Spencer authored
      Move include/Config and include/Support into include/llvm/Config,
      include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
      public header files must be under include/llvm/.
      
      llvm-svn: 16137
      7c16caa3
  19. Jul 29, 2004
  20. Jun 19, 2004
    • Chris Lattner's avatar
      Change to use the StableBasicBlockNumbering class · 4db0f826
      Chris Lattner authored
      llvm-svn: 14247
      4db0f826
    • Chris Lattner's avatar
      Do not let the numbering of PHI nodes placed in the function depend on · a52ab6f5
      Chris Lattner authored
      non-deterministic things like the ordering of blocks in the dominance
      frontier of a BB.  Unfortunately, I don't know of a better way to solve
      this problem than to explicitly sort the BB's in function-order before
      processing them.  This is guaranteed to slow the pass down a bit, but
      is absolutely necessary to get usable diffs between two different tools
      executing the mem2reg or scalarrepl pass.
      
      Before this, bazillions of spurious diff failures occurred all over the
      place due to the different order of processing PHIs:
      
      -       %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.0, uint 0, uint 0
      +       %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.1, uint 0, uint 0
      
      Now, the diffs match.
      
      llvm-svn: 14244
      a52ab6f5
  21. Apr 08, 2004
  22. Feb 03, 2004
  23. Jan 12, 2004
  24. Jan 09, 2004
  25. Nov 11, 2003
  26. Oct 20, 2003
  27. Oct 18, 2003
  28. Oct 06, 2003
    • Chris Lattner's avatar
      This changes the PromoteMemToReg function to create "pruned" SSA form, not · c30f22f5
      Chris Lattner authored
      "minimal" SSA form (in other words, it doesn't insert dead PHIs).  This
      speeds up the mem2reg pass very significantly because it doesn't have to
      do a lot of frivolous work in many common cases.
      
      In the 252.eon function I have been playing with, this doesn't even insert
      the 120 PHI nodes that it used to which were trivially dead (in the process
      of promoting 356 alloca instructions overall).  This speeds up the mem2reg
      pass from 1.2459s to 0.1284s.  More significantly, the DCE pass used to take
      2.4138s to remove the 120 dead PHI nodes that mem2reg constructed, now it
      takes 0.0134s (which is the time to scan the function and decide that there
      is nothing dead).  So overall, on this one function, we speed things up a
      total of 3.5179s, which is a 24.8x speedup!  :)
      
      This change is tested by the Mem2Reg/2003-10-05-DeadPHIInsertion.ll test,
      which now passes.
      
      llvm-svn: 8884
      c30f22f5
  29. Oct 05, 2003
    • Chris Lattner's avatar
      a906bacf
    • Chris Lattner's avatar
      Speed up the mem2reg transform for allocas which are only read/written in a single · 80471529
      Chris Lattner authored
      basic block.  This is amazingly common in code generated by the C/C++ front-ends.
      This change makes it not have to insert ANY phi nodes, whereas before it would insert
      a ton of dead ones which DCE would have to clean up.
      
      Thus, this fix improves compile-time performance of these trivial allocas in two ways:
        1. It doesn't have to do the walking and book-keeping for renaming
        2. It does not insert dead phi nodes for them which would have to
           subsequently be cleaned up.
      
      On my favorite testcase from 252.eon, this special case handles 305 out of
      356 promoted allocas in the function.  It speeds up the mem2reg pass from 7.5256s
      to 1.2505s.  It inserts 677 fewer dead PHI nodes, which speeds up a subsequent
      -dce pass from 18.7524s to 2.4806s.
      
      There are still 120 trivially dead PHI nodes being inserted for variables used
      in multiple basic blocks, but they are not handled by this patch.
      
      llvm-svn: 8881
      80471529
    • Chris Lattner's avatar
      The first PHI node may be null, scan for the first non-null one · a5721d3d
      Chris Lattner authored
      llvm-svn: 8865
      a5721d3d
    • Chris Lattner's avatar
      The VersionNumbers vector is only used during PHI placement. Turn it into an... · 203bc011
      Chris Lattner authored
      The VersionNumbers vector is only used during PHI placement.  Turn it into an argument, allowing us to get rid of the vector.
      
      llvm-svn: 8864
      203bc011
    • Chris Lattner's avatar
      * Update file header comment · 7d9692df
      Chris Lattner authored
      *** Revamp the code which handled unreachable code in the function.  Now the
          code is much more efficient for high-degree basic blocks, such as those
          that occur in the 252.eon SPEC benchmark.
      
      For the interested, the time to promote a SINGLE alloca in _ZN7mrScene4ReadERSi
      function used to be > 3.5s.  Now it is < .075s.  The function has a LOT of
      allocas in it, so it appeared to be infinite looping, this should make it much
      nicer.  :)
      
      llvm-svn: 8863
      7d9692df
Loading