Skip to content
  1. Jun 01, 2008
    • Owen Anderson's avatar
      Don't remove the memcpy when call slot substitution fails. · d071a870
      Owen Anderson authored
      llvm-svn: 51848
      d071a870
    • Duncan Sands's avatar
      When simplifying a call to a bitcast function, tighten up · 0397cd2e
      Duncan Sands authored
      the conditions for performing the transform when only the
      function declaration is available: no longer allow turning
      i32 into i64 for example.  Only allow changing between
      pointer types, and between pointer types and integers of
      the same size.  For return values ptr -> intptr was already
      allowed; I added ptr -> ptr and intptr -> ptr while there.
      As shown by a recent objc testcase, changing the way
      parameters/return values are passed can be fatal when calling
      code written in assembler that directly manipulates call
      arguments and return values unless the transform has no
      impact on the way they are passed at the codegen level.
      While it is possible to imagine an ABI that treats integers
      of pointer size differently to pointers, I don't think LLVM
      supports any so the transform should now be safe while still
      being useful.
      
      llvm-svn: 51834
      0397cd2e
  2. May 31, 2008
  3. May 29, 2008
  4. May 28, 2008
  5. May 27, 2008
  6. May 25, 2008
  7. May 24, 2008
  8. May 23, 2008
  9. May 22, 2008
  10. May 21, 2008
    • Dan Gohman's avatar
      When LSR is replacing an instruction, call · e62632e0
      Dan Gohman authored
      ScalarEvolution::deleteValueFromRecords on it before doing the
      replaceAllUsesWith, because ScalarEvolution looks at the instruction's
      users to find SCEV references to the instruction's SCEV object in its
      internal maps.
      
      Move all of LSR's loop-related state clearing after processing the loop
      and before cleaning up dead PHI nodes. This eliminates all of LSR's SCEV
      references just before the calls to ScalarEvolution::deleteValueFromRecords
      so that when ScalarEvolution drops its own SCEV references, the reference
      counts will reach zero and the SCEVs will be deleted immediately.
      
      These changes fix some compiler aborts involving ScalarEvolution holding
      onto and reusing SCEV objects for instructions that have been deleted.
      No regression test unfortunately; because the symptoms were due to
      dangling pointers, reduced testcases ended up being fairly arbitrary.
      
      llvm-svn: 51359
      e62632e0
  11. May 20, 2008
    • Dan Gohman's avatar
      Port SelectionDAG's ComputeNumSignBits-using code to instcombine, · 81ab753b
      Dan Gohman authored
      now that instcombine also has ComputeNumSignBits.
      
      llvm-svn: 51350
      81ab753b
    • Matthijs Kooijman's avatar
      Fix typo. · 5148a4ba
      Matthijs Kooijman authored
      llvm-svn: 51303
      5148a4ba
    • Chris Lattner's avatar
      Teach instcombine 4 new xforms: · 7ac943ff
      Chris Lattner authored
        (add (sext x), cst) --> (sext (add x, cst'))
        (add (sext x), (sext y)) --> (sext (add int x, y))
        (add double (sitofp x), fpcst) --> (sitofp (add int x, intcst))
        (add double (sitofp x), (sitofp y)) --> (sitofp (add int x, y))
      
      This generally reduces conversions.  For example MiBench/telecomm-gsm
      gets these simplifications:
      
      HACK2: 	%tmp67.i142.i.i = sext i16 %tmp6.i141.i.i to i32		; <i32> [#uses=1]
      	%tmp23.i139.i.i = sext i16 %tmp2.i138.i.i to i32		; <i32> [#uses=1]
      	%tmp8.i143.i.i = add i32 %tmp67.i142.i.i, %tmp23.i139.i.i		; <i32> [#uses=3]
      HACK2: 	%tmp67.i121.i.i = sext i16 %tmp6.i120.i.i to i32		; <i32> [#uses=1]
      	%tmp23.i118.i.i = sext i16 %tmp2.i117.i.i to i32		; <i32> [#uses=1]
      	%tmp8.i122.i.i = add i32 %tmp67.i121.i.i, %tmp23.i118.i.i		; <i32> [#uses=3]
      HACK2: 	%tmp67.i.i190.i = sext i16 %tmp6.i.i189.i to i32		; <i32> [#uses=1]
      	%tmp23.i.i187.i = sext i16 %tmp2.i.i186.i to i32		; <i32> [#uses=1]
      	%tmp8.i.i191.i = add i32 %tmp67.i.i190.i, %tmp23.i.i187.i		; <i32> [#uses=3]
      HACK2: 	%tmp67.i173.i.i.i = sext i16 %tmp6.i172.i.i.i to i32		; <i32> [#uses=1]
      	%tmp23.i170.i.i.i = sext i16 %tmp2.i169.i.i.i to i32		; <i32> [#uses=1]
      	%tmp8.i174.i.i.i = add i32 %tmp67.i173.i.i.i, %tmp23.i170.i.i.i		; <i32> [#uses=3]
      HACK2: 	%tmp67.i152.i.i.i = sext i16 %tmp6.i151.i.i.i to i32		; <i32> [#uses=1]
      	%tmp23.i149.i.i.i = sext i16 %tmp2.i148.i.i.i to i32		; <i32> [#uses=1]
      	%tmp8.i153.i.i.i = add i32 %tmp67.i152.i.i.i, %tmp23.i149.i.i.i		; <i32> [#uses=3]
      HACK2: 	%tmp67.i.i.i.i = sext i16 %tmp6.i.i.i.i to i32		; <i32> [#uses=1]
      	%tmp23.i.i5.i.i = sext i16 %tmp2.i.i.i.i to i32		; <i32> [#uses=1]
      	%tmp8.i.i7.i.i = add i32 %tmp67.i.i.i.i, %tmp23.i.i5.i.i		; <i32> [#uses=3]
      
      
      This also fixes a bug in ComputeNumSignBits handling select and
      makes it more aggressive with and/or.
      
      llvm-svn: 51302
      7ac943ff
    • Chris Lattner's avatar
      fix two issues Neil noticed, thanks! · 9c27f96d
      Chris Lattner authored
      llvm-svn: 51296
      9c27f96d
    • Dan Gohman's avatar
      Refine the fix in r51169 to only apply when the operand val being · e5572706
      Dan Gohman authored
      replaced is a PHI. This prevents it from inserting uses before defs
      in the case that it isn't a PHI and it depends on other instructions
      later in the block. This fixes the 447.dealII regression on x86-64.
      
      llvm-svn: 51292
      e5572706
    • Dan Gohman's avatar
      Make AssociativeOpt static. · d717761a
      Dan Gohman authored
      llvm-svn: 51290
      d717761a
    • Devang Patel's avatar
      ee7bf41c
    • Dan Gohman's avatar
      Add a ComputeNumSignBits function for use by instcombine, based on the · 123438cc
      Dan Gohman authored
      code in SelectionDAG.
      
      llvm-svn: 51279
      123438cc
  12. May 19, 2008
Loading