Skip to content
  1. Feb 14, 2011
  2. Jan 09, 2011
  3. Jan 08, 2011
  4. Jan 04, 2011
  5. Dec 30, 2010
  6. Dec 29, 2010
  7. Dec 28, 2010
  8. Dec 27, 2010
    • Cameron Zwarich's avatar
      Change an assertion to assert what the code actually relies upon. · 5e5cfbe8
      Cameron Zwarich authored
      llvm-svn: 122586
      5e5cfbe8
    • Cameron Zwarich's avatar
      Land a first cut at StrongPHIElimination. There are only 5 new test failures · 25d046ce
      Cameron Zwarich authored
      when running without the verifier, and I have not yet checked them to see if
      the new results are still correct. There are more verifier failures, but they
      all seem to be additional occurrences of verifier failures that occur with the
      existing PHIElimination pass. There are a few obvious issues with the code:
      
      1) It doesn't properly update the register equivalence classes during copy
      insertion, and instead recomputes them before merging live intervals and
      renaming registers. I wanted to keep this first patch simple for debugging
      purposes, but it shouldn't be very hard to do this.
      
      2) It doesn't mix the renaming and live interval merging with the copy insertion
      process, which leads to a lot of virtual register churn. Virtual registers and
      live intervals are created, only to later be merged into others. The code should
      be smarter and only create a new virtual register if there is no existing
      register in the same congruence class.
      
      3) In one place the code uses a DenseMap per basic block, which is unnecessary
      heap allocation. There should be an inline storage version of DenseMap.
      
      I did a quick compile-time test of running llc on 403.gcc with and without
      StrongPHIElimination. It is slightly slower with StrongPHIElimination, because
      the small decrease in the coalescer runtime can't beat the increase in phi
      elimination runtime. Perhaps fixing the above performance issues will narrow
      the gap.
      
      I also haven't yet run any tests of the quality of the generated code.
      
      llvm-svn: 122582
      25d046ce
  9. Dec 24, 2010
  10. Dec 21, 2010
    • Cameron Zwarich's avatar
      Incremental progress towards a new implementation of StrongPHIElimination. Most · 79ebc718
      Cameron Zwarich authored
      of the problems with my last attempt were in the updating of LiveIntervals
      rather than the coalescing itself. Therefore, I decided to get that right first
      by essentially reimplementing the existing PHIElimination using LiveIntervals.
      
      It works correctly, with only a few tests failing (which may not be legitimate
      failures) and no new verifier failures (at least as far as I can tell, I didn't
      count the number per file).
      
      llvm-svn: 122321
      79ebc718
  11. Dec 05, 2010
  12. Dec 03, 2010
  13. 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
  14. Oct 12, 2010
  15. Oct 08, 2010
  16. Aug 23, 2010
  17. Aug 06, 2010
  18. Jul 11, 2010
  19. Jun 26, 2010
    • Jakob Stoklund Olesen's avatar
      Don't track kills in VNInfo. Use interval ends instead. · 55d738e2
      Jakob Stoklund Olesen authored
      The VNInfo.kills vector was almost unused except for all the code keeping it
      updated. The few places using it were easily rewritten to check for interval
      ends instead.
      
      The two new methods LiveInterval::killedAt and killedInRange are replacements.
      
      This brings us down to 3 independent data structures tracking kills.
      
      llvm-svn: 106905
      55d738e2
  20. May 06, 2010
  21. Feb 10, 2010
  22. Feb 09, 2010
  23. Jan 05, 2010
  24. Dec 18, 2009
  25. Nov 04, 2009
    • Lang Hames's avatar
      The Indexes Patch. · 05fb9637
      Lang Hames authored
      This introduces a new pass, SlotIndexes, which is responsible for numbering
      instructions for register allocation (and other clients). SlotIndexes numbering
      is designed to match the existing scheme, so this patch should not cause any
      changes in the generated code.
      
      For consistency, and to avoid naming confusion, LiveIndex has been renamed
      SlotIndex.
      
      The processImplicitDefs method of the LiveIntervals analysis has been moved
      into its own pass so that it can be run prior to SlotIndexes. This was
      necessary to match the existing numbering scheme.
      
      llvm-svn: 85979
      05fb9637
  26. Oct 25, 2009
  27. Oct 03, 2009
  28. Sep 09, 2009
  29. Sep 04, 2009
  30. Aug 23, 2009
Loading