Skip to content
  1. May 08, 2011
    • Jakob Stoklund Olesen's avatar
      Remove an assertion to fix PR9872. · 89bd2ae5
      Jakob Stoklund Olesen authored
      It can happen that a live debug variable is the last use of a sub-register, and
      the register allocator will pick a larger register class for the virtual
      register.  If the allocated register doesn't support the sub-register index,
      just use %noreg for the debug variables instead of asserting.
      
      In PR9872, a debug variable ends up in the sub_8bit_hi part of a GR32_ABCD
      register. The register is split and one part is inflated to GR32 and assigned
      %ESI because there are no more normal uses of sub_8bit_hi.
      
      Since %ESI doesn't have that sub-register, substPhysReg asserted. Now it will
      simply insert a %noreg instead, and the debug variable will be marked
      unavailable in that range.
      
      We don't currently have a way of saying: !"value" is in bits 8-15 of %ESI, I
      don't know if DWARF even supports that.
      
      llvm-svn: 131073
      89bd2ae5
  2. Apr 30, 2011
  3. Apr 05, 2011
  4. Mar 05, 2011
  5. Jan 10, 2011
  6. Jan 09, 2011
  7. 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
  8. Jan 07, 2011
  9. Oct 22, 2010
  10. Oct 20, 2010
  11. Oct 19, 2010
    • Jakob Stoklund Olesen's avatar
      Shrink MachineOperand from 40 to 32 bytes on 64-bit hosts. · a4941690
      Jakob Stoklund Olesen authored
      Pull an unsigned out of the Contents union such that it has the same size as two
      pointers and no padding.
      
      Arrange members such that the Contents union and all pointers can be 8-byte
      aligned without padding.
      
      This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be
      unaffected.
      
      llvm-svn: 116857
      a4941690
  12. Sep 21, 2010
  13. Aug 02, 2010
  14. Jul 28, 2010
  15. Jul 05, 2010
  16. Jul 02, 2010
    • Dale Johannesen's avatar
      Propagate the AlignStack bit in InlineAsm's to the · 4d887f7c
      Dale Johannesen authored
      PrologEpilog code, and use it to determine whether
      the asm forces stack alignment or not.  gcc consistently
      does not do this for GCC-style asms; Apple gcc inconsistently
      sometimes does it for asm blocks.  There is no
      convenient place to put a bit in either the SDNode or
      the MachineInstr form, so I've added an extra operand
      to each; unlovely, but it does allow for expansion for
      more bits, should we need it.  PR 5125.  Some
      existing testcases are affected.
      The operand lists of the SDNode and MachineInstr forms
      are indexed with awesome mnemonics, like "2"; I may
      fix this someday, but not now.  I'm not making it any
      worse.  If anyone is inspired I think you can find all
      the right places from this patch.
      
      llvm-svn: 107506
      4d887f7c
  17. Jun 29, 2010
  18. Jun 19, 2010
  19. Jun 03, 2010
    • Jakob Stoklund Olesen's avatar
      Slightly change the meaning of the reMaterialize target hook when the original · a8ad9774
      Jakob Stoklund Olesen authored
      instruction defines subregisters.
      
      Any existing subreg indices on the original instruction are preserved or
      composed with the new subreg index.
      
      Also substitute multiple operands mentioning the original register by using the
      new MachineInstr::substituteRegister() function. This is necessary because there
      will soon be <imp-def> operands added to non read-modify-write partial
      definitions. This instruction:
      
        %reg1234:foo = FLAP %reg1234<imp-def>
      
      will reMaterialize(%reg3333, bar) like this:
      
        %reg3333:bar-foo = FLAP %reg333:bar<imp-def>
      
      Finally, replace the TargetRegisterInfo pointer argument with a reference to
      indicate that it cannot be NULL.
      
      llvm-svn: 105358
      a8ad9774
  20. Jun 02, 2010
  21. May 28, 2010
  22. May 25, 2010
  23. May 21, 2010
  24. May 19, 2010
  25. May 13, 2010
  26. Apr 28, 2010
  27. Apr 09, 2010
  28. Apr 08, 2010
  29. Apr 07, 2010
  30. Apr 02, 2010
Loading