Skip to content
  1. Jun 04, 2008
    • Owen Anderson's avatar
      Remove unneeded #include. · 61c7f2a6
      Owen Anderson authored
      llvm-svn: 51955
      61c7f2a6
    • Duncan Sands's avatar
      Change packed struct layout so that field sizes · fc3c489b
      Duncan Sands authored
      are the same as in unpacked structs, only field
      positions differ.  This only matters for structs
      containing x86 long double or an apint; it may
      cause backwards compatibility problems if someone
      has bitcode containing a packed struct with a
      field of one of those types.
      The issue is that only 10 bytes are needed to
      hold an x86 long double: the store size is 10
      bytes, but the ABI size is 12 or 16 bytes (linux/
      darwin) which comes from rounding the store size
      up by the alignment.  Because it seemed silly not
      to pack an x86 long double into 10 bytes in a
      packed struct, this is what was done.  I now
      think this was a mistake.  Reserving the ABI size
      for an x86 long double field even in a packed
      struct makes things more uniform: the ABI size is
      now always used when reserving space for a type.
      This means that developers are less likely to
      make mistakes.  It also makes life easier for the
      CBE which otherwise could not represent all LLVM
      packed structs (PR2402).
      Front-end people might need to adjust the way
      they create LLVM structs - see following change
      to llvm-gcc.
      
      llvm-svn: 51928
      fc3c489b
  2. Jun 03, 2008
  3. Jun 02, 2008
  4. 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
  5. May 31, 2008
  6. May 29, 2008
  7. May 28, 2008
  8. May 27, 2008
  9. May 25, 2008
  10. May 24, 2008
  11. May 23, 2008
  12. May 22, 2008
  13. 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
  14. 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
Loading