Skip to content
  1. Oct 30, 2010
  2. 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
  3. Oct 12, 2010
  4. Oct 08, 2010
  5. Oct 07, 2010
  6. Sep 17, 2010
  7. Aug 17, 2010
  8. Aug 06, 2010
  9. Jul 22, 2010
  10. Jul 16, 2010
  11. Jul 08, 2010
  12. Jul 03, 2010
  13. Jun 05, 2010
  14. Jun 03, 2010
  15. Jun 02, 2010
  16. May 22, 2010
  17. May 21, 2010
  18. May 13, 2010
  19. Apr 21, 2010
  20. Apr 20, 2010
  21. Apr 02, 2010
  22. Mar 24, 2010
  23. Mar 23, 2010
  24. Mar 11, 2010
  25. Mar 10, 2010
    • Evan Cheng's avatar
      Add a couple more heuristics to neuter machine cse some more. · 4c5f7a7f
      Evan Cheng authored
      1. Be careful with cse "cheap" expressions. e.g. constant materialization. Only cse them when the common expression is local or in a direct predecessor. We don't want cse of cheap instruction causing other expressions to be spilled.
      2. Watch out for the case where the expression doesn't itself uses a virtual register. e.g. lea of frame object. If the common expression itself is used by copies (common for passing addresses to function calls), don't perform the cse. Since these expressions do not use a register, it creates a live range but doesn't close any, we want to be very careful with increasing register pressure.
      
      Note these are heuristics so machine cse doesn't make register allocator unhappy. Once we have proper live range splitting and re-materialization support in place, these should be evaluated again.
      
      Now machine cse is almost always a win on llvm nightly tests on x86 and x86_64.
      
      llvm-svn: 98121
      4c5f7a7f
  26. Mar 09, 2010
  27. Mar 06, 2010
  28. Mar 04, 2010
  29. Mar 03, 2010
Loading