Skip to content
  1. Jul 21, 2008
  2. Jul 20, 2008
    • Bill Wendling's avatar
      Pull r53795 from Gaz into mainline: · 1071bfb1
      Bill Wendling authored
      If .loc and .file aren't used, always emit the "debug_line" section. This
      requires at least one entry in the line matrix. So if there's nothing to emit
      into the matrix, emit an end of matrix value anyway.
      
      llvm-svn: 53803
      1071bfb1
  3. Jul 19, 2008
  4. Jul 18, 2008
  5. Jul 17, 2008
    • Dan Gohman's avatar
      When printing MemOperand nodes, only use print() for · 7168de78
      Dan Gohman authored
      PseudoSourceValue values, which never have names. Use getName()
      for all other values, because we want to print just a short summary
      of the value, not the entire instruction.
      
      llvm-svn: 53738
      7168de78
    • Evan Cheng's avatar
    • Duncan Sands's avatar
      Use a legal type for elements of the vector_shuffle · 656b256a
      Duncan Sands authored
      mask.  These are just indices into the shuffled vector
      so their type is unrelated to the type of the
      shuffled elements (which is what was being used before).
      This fixes vec_shuffle-11.ll when using LegalizeTypes.
      What seems to have happened is that Dan's recent change
      r53687, which corrected the result type of the shuffle,
      somehow caused LegalizeTypes to notice that the mask
      operand was a BUILD_VECTOR with a legal type but elements
      of an illegal type (i64).  LegalizeTypes legalized this
      by introducing a new BUILD_VECTOR of i32 and bitcasting
      it to the old type.  But the mask operand is not supposed
      to be a bitcast but a straight BUILD_VECTOR of constants,
      causing a crash.
      
      llvm-svn: 53729
      656b256a
    • Dan Gohman's avatar
      Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk · 17059681
      Dan Gohman authored
      replacement of multiple values. This is slightly more efficient
      than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
      could be optimized even further. However, an important property of this
      new function is that it handles the case where the source value set and
      destination value set overlap. This makes it feasible for isel to use
      SelectNodeTo in many very common cases, which is advantageous because
      SelectNodeTo avoids a temporary node and it doesn't require CSEMap
      updates for users of values that don't change position.
      
      Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
      handle operand lists more efficiently, and to correctly handle a number
      of corner cases to which its new wider use exposes it.
      
      This commit also includes a change to the encoding of post-isel opcodes
      in SDNodes; now instead of being sandwiched between the target-independent
      pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
      opcodes are now represented as negative values. This makes it possible
      to test if an opcode is pre-isel or post-isel without having to know
      the size of the current target's post-isel instruction set.
      
      These changes speed up llc overall by 3% and reduce memory usage by 10%
      on the InstructionCombining.cpp testcase with -fast and -regalloc=local.
      
      llvm-svn: 53728
      17059681
    • Duncan Sands's avatar
      LegalizeTypes support for what seems to be the · 7e5edf1a
      Duncan Sands authored
      only missing ppc long double operations: FNEG
      and FP_EXTEND.
      
      llvm-svn: 53723
      7e5edf1a
    • Duncan Sands's avatar
      Turn LegalizeTypes back off again for the moment: · d9256a7c
      Duncan Sands authored
      it is breaking Darwin bootstrap due to missing
      functionality.
      
      llvm-svn: 53721
      d9256a7c
    • Duncan Sands's avatar
      Factorize some code for determining which libcall to use. · 77a3d05f
      Duncan Sands authored
      llvm-svn: 53713
      77a3d05f
  6. Jul 16, 2008
  7. Jul 15, 2008
  8. Jul 14, 2008
  9. Jul 12, 2008
    • Evan Cheng's avatar
      Typos. · 2b3c52d5
      Evan Cheng authored
      llvm-svn: 53504
      2b3c52d5
    • Evan Cheng's avatar
      Fix PR2536: a nasty spiller bug. If a two-address instruction uses a register... · e0a352e8
      Evan Cheng authored
      Fix PR2536: a nasty spiller bug. If a two-address instruction uses a register but the use portion of its live range is not part of its liveinterval, it must be defined by an implicit_def. In that case, do not spill the use. e.g.
      8   %reg1024<def> = IMPLICIT_DEF
      12  %reg1024<def> = INSERT_SUBREG %reg1024<kill>, %reg1025, 2
      
      The live range [12, 14) are not part of the r1024 live interval since it's defined by an implicit def. It will not conflicts with live interval of r1025. Now suppose both registers are spilled, you can easily see a situation where both registers are reloaded before the INSERT_SUBREG and both target registers that would overlap.
      
      llvm-svn: 53503
      e0a352e8
Loading