Skip to content
  1. Jan 10, 2011
  2. Jan 08, 2011
    • Evan Cheng's avatar
      Do not model all INLINEASM instructions as having unmodelled side effects. · 6eb516db
      Evan Cheng authored
      Instead encode llvm IR level property "HasSideEffects" in an operand (shared
      with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check
      the operand when the instruction is an INLINEASM.
      
      This allows memory instructions to be moved around INLINEASM instructions.
      
      llvm-svn: 123044
      6eb516db
  3. Jan 03, 2011
  4. Dec 15, 2010
  5. Oct 30, 2010
  6. 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
  7. Oct 12, 2010
  8. Oct 08, 2010
  9. Oct 07, 2010
  10. Sep 17, 2010
  11. Aug 17, 2010
  12. Aug 06, 2010
  13. Jul 22, 2010
  14. Jul 16, 2010
  15. Jul 08, 2010
  16. Jul 03, 2010
  17. Jun 05, 2010
  18. Jun 03, 2010
  19. Jun 02, 2010
  20. May 22, 2010
  21. May 21, 2010
  22. May 13, 2010
  23. Apr 21, 2010
  24. Apr 20, 2010
  25. Apr 02, 2010
  26. Mar 24, 2010
  27. Mar 23, 2010
  28. Mar 11, 2010
  29. 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
  30. Mar 09, 2010
  31. Mar 06, 2010
  32. Mar 04, 2010
Loading