Skip to content
  1. Jun 02, 2012
    • Jakob Stoklund Olesen's avatar
      Switch all register list clients to the new MC*Iterator interface. · 54038d79
      Jakob Stoklund Olesen authored
      No functional change intended.
      
      Sorry for the churn. The iterator classes are supposed to help avoid
      giant commits like this one in the future. The TableGen-produced
      register lists are getting quite large, and it may be necessary to
      change the table representation.
      
      This makes it possible to do so without changing all clients (again).
      
      llvm-svn: 157854
      54038d79
  2. Jun 01, 2012
  3. Mar 05, 2012
  4. Mar 04, 2012
  5. Feb 09, 2012
    • Jakob Stoklund Olesen's avatar
      Never delete instructions that define reserved registers. · 5d33291e
      Jakob Stoklund Olesen authored
      I think this was already the intention, but DeadMachineInstructionElim
      was accidentally tracking the liveness of reserved registers. Now,
      instructions with reserved defs are never deleted.
      
      This prevents the call stack adjustment instructions from getting
      deleted when enabling register masks.
      
      llvm-svn: 150116
      5d33291e
  6. Feb 08, 2012
    • Andrew Trick's avatar
      Codegen pass definition cleanup. No functionality. · 1fa5bcbe
      Andrew Trick authored
      Moving toward a uniform style of pass definition to allow easier target configuration.
      Globally declare Pass ID.
      Globally declare pass initializer.
      Use INITIALIZE_PASS consistently.
      Add a call to the initializer from CodeGen.cpp.
      Remove redundant "createPass" functions and "getPassName" methods.
      
      While cleaning up declarations, cleaned up comments (sorry for large diff).
      
      llvm-svn: 150100
      1fa5bcbe
    • Andrew Trick's avatar
      whitespace · 9e761997
      Andrew Trick authored
      llvm-svn: 150094
      9e761997
  7. Feb 03, 2012
  8. Jan 20, 2012
  9. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  10. Jun 27, 2011
  11. Jan 10, 2011
  12. 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
  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 08, 2010
  15. Aug 31, 2010
    • Jakob Stoklund Olesen's avatar
      Track liveness of unallocatable, unreserved registers in machine DCE. · 7993dae7
      Jakob Stoklund Olesen authored
      Reserved registers are unpredictable, and are treated as always live by machine
      DCE.
      
      Allocatable registers are never reserved, and can be used for virtual registers.
      
      Unreserved, unallocatable registers can not be used for virtual registers, but
      otherwise behave like a normal allocatable register. Most targets only have
      the flag register in this set.
      
      llvm-svn: 112649
      7993dae7
  16. Aug 06, 2010
  17. Jul 22, 2010
  18. Mar 02, 2010
  19. Feb 12, 2010
  20. Feb 11, 2010
  21. Feb 10, 2010
  22. Feb 09, 2010
  23. Feb 06, 2010
    • Evan Cheng's avatar
      Run codegen dce pass for all targets at all optimization levels. Previously it's · ea5c6be7
      Evan Cheng authored
      only run for x86 with fastisel. I've found it being very effective in
      eliminating some obvious dead code as result of formal parameter lowering
      especially when tail call optimization eliminated the need for some of the loads
      from fixed frame objects. It also shrinks a number of the tests. A couple of
      tests no longer make sense and are now eliminated.
      
      llvm-svn: 95493
      ea5c6be7
  24. Jan 27, 2010
  25. Jan 04, 2010
    • David Greene's avatar
      · 7af1efc1
      David Greene authored
      Change errs() to dbgs().
      
      llvm-svn: 92496
      7af1efc1
  26. Oct 25, 2009
  27. Oct 10, 2009
    • Dan Gohman's avatar
      Factor out LiveIntervalAnalysis' code to determine whether an instruction · 87b02d5b
      Dan Gohman authored
      is trivially rematerializable and integrate it into
      TargetInstrInfo::isTriviallyReMaterializable. This way, all places that
      need to know whether an instruction is rematerializable will get the
      same answer.
      
      This enables the useful parts of the aggressive-remat option by
      default -- using AliasAnalysis to determine whether a memory location
      is invariant, and removes the questionable parts -- rematting operations
      with virtual register inputs that may not be live everywhere.
      
      llvm-svn: 83687
      87b02d5b
  28. Aug 22, 2009
  29. Aug 11, 2009
  30. Oct 16, 2008
  31. Oct 03, 2008
  32. Sep 25, 2008
  33. Sep 24, 2008
Loading