Skip to content
  1. Oct 21, 2009
  2. Oct 15, 2009
  3. Oct 14, 2009
  4. 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
  5. Oct 09, 2009
  6. Oct 07, 2009
  7. Oct 05, 2009
  8. Sep 29, 2009
  9. Sep 26, 2009
  10. Sep 25, 2009
    • Dan Gohman's avatar
      Improve MachineMemOperand handling. · 48b185d6
      Dan Gohman authored
       - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
         This eliminates MachineInstr's std::list member and allows the data to be
         created by isel and live for the remainder of codegen, avoiding a lot of
         copying and unnecessary translation. This also shrinks MemSDNode.
       - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
         fields for MachineMemOperands.
       - Change MemSDNode to have a MachineMemOperand member instead of its own
         fields with the same information. This introduces some redundancy, but
         it's more consistent with what MachineInstr will eventually want.
       - Ignore alignment when searching for redundant loads for CSE, but remember
         the greatest alignment.
      
      Target-specific code which previously used MemOperandSDNodes with generic
      SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
      so that the SelectionDAG framework knows that MachineMemOperand information
      is available.
      
      llvm-svn: 82794
      48b185d6
  11. Sep 23, 2009
    • Dan Gohman's avatar
      Give MachineMemOperand an operator<<, factoring out code from · c0353bff
      Dan Gohman authored
      two different places for printing MachineMemOperands.
      
      Drop the virtual from Value::dump and instead give Value a
      protected virtual hook that can be overridden by subclasses
      to implement custom printing. This lets printing be more
      consistent, and simplifies printing of PseudoSourceValue
      values.
      
      llvm-svn: 82599
      c0353bff
  12. Sep 21, 2009
  13. Sep 17, 2009
  14. Aug 23, 2009
  15. Aug 13, 2009
  16. Aug 04, 2009
  17. Aug 03, 2009
    • Jakob Stoklund Olesen's avatar
      Fix Bug 4657: register scavenger asserts with subreg lowering · 5d8ace09
      Jakob Stoklund Olesen authored
      When LowerSubregsInstructionPass::LowerInsert eliminates an INSERT_SUBREG
      instriction because it is an identity copy, make sure that the same registers
      are alive before and after the elimination.
      
      When the super-register is marked <undef> this requires inserting an
      IMPLICIT_DEF instruction to make sure the super register is live.
      
      Fix a related bug where a kill flag on the inserted sub-register was not transferred properly.
      
      Finally, clear the undef flag in MachineInstr::addRegisterKilled. Undef implies dead and kill implies live, so they cant both be valid.
      
      llvm-svn: 77989
      5d8ace09
  18. Aug 02, 2009
  19. Jul 28, 2009
  20. Jul 19, 2009
  21. Jul 16, 2009
  22. Jul 14, 2009
  23. Jul 11, 2009
    • Torok Edwin's avatar
      assert(0) -> LLVM_UNREACHABLE. · 56d06597
      Torok Edwin authored
      Make llvm_unreachable take an optional string, thus moving the cerr<< out of
      line.
      LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
      NDEBUG builds.
      
      llvm-svn: 75379
      56d06597
  24. Jun 30, 2009
    • Evan Cheng's avatar
      Add a bit IsUndef to MachineOperand. This indicates the def / use register... · 0dc101b8
      Evan Cheng authored
      Add a bit IsUndef to MachineOperand. This indicates the def / use register operand is defined by an implicit_def. That means it can def / use any register and passes (e.g. register scavenger) can feel free to ignore them.
      
      The register allocator, when it allocates a register to a virtual register defined by an implicit_def, can allocate any physical register without worrying about overlapping live ranges. It should mark all of operands of the said virtual register so later passes will do the right thing.
      
      This is not the best solution. But it should be a lot less fragile to having the scavenger try to track what is defined by implicit_def.
      
      llvm-svn: 74518
      0dc101b8
  25. Jun 24, 2009
  26. Jun 05, 2009
  27. May 01, 2009
  28. Apr 29, 2009
  29. Apr 15, 2009
  30. Apr 10, 2009
  31. Apr 09, 2009
  32. Mar 23, 2009
  33. Mar 19, 2009
  34. Feb 19, 2009
  35. Jan 28, 2009
  36. Dec 23, 2008
Loading