Skip to content
  1. Dec 09, 2011
  2. Dec 06, 2011
    • Benjamin Kramer's avatar
      Simplify common predecessor finding. · b5188f16
      Benjamin Kramer authored
      - Walking over pred_begin/pred_end is an expensive operation.
      - PHINodes contain a value for each predecessor anyway.
      - While it may look like we used to save a few iterations with the set,
        be aware that getIncomingValueForBlock does a linear search on
        the values of the phi node.
      - Another -5% on ARMDisassembler.cpp (Release build). This was the last
        entry in the profile that was obviously wasting time.
      
      llvm-svn: 145937
      b5188f16
  3. Dec 05, 2011
  4. Dec 02, 2011
  5. Dec 01, 2011
  6. Nov 29, 2011
    • Daniel Dunbar's avatar
      build/CMake: Finish removal of add_llvm_library_dependencies. · 539d0a8a
      Daniel Dunbar authored
      llvm-svn: 145420
      539d0a8a
    • Duncan Sands's avatar
      Fix a theoretical problem (not seen in the wild): if different instances of a · ca6f8ddb
      Duncan Sands authored
      weak variable are compiled by different compilers, such as GCC and LLVM, while
      LLVM may increase the alignment to the preferred alignment there is no reason to
      think that GCC will use anything more than the ABI alignment.  Since it is the
      GCC version that might end up in the final program (as the linkage is weak), it
      is wrong to increase the alignment of loads from the global up to the preferred
      alignment as the alignment might only be the ABI alignment.
      
      Increasing alignment up to the ABI alignment might be OK, but I'm not totally
      convinced that it is.  It seems better to just leave the alignment of weak
      globals alone.
      
      llvm-svn: 145413
      ca6f8ddb
  7. Nov 20, 2011
  8. Nov 18, 2011
    • Andrew Trick's avatar
      Fix an overly general check in SimplifyIndvar to handle useless phi cycles. · 94904586
      Andrew Trick authored
      The right way to check for a binary operation is
      cast<BinaryOperator>. The original check: cast<Instruction> &&
      numOperands() == 2 would match phi "instructions", leading to an
      infinite loop in extreme corner case: a useless phi with operands
      [self, constant] that prior optimization passes failed to remove,
      being used in the loop by another useless phi, in turn being used by an
      lshr or udiv.
      
      Fixes PR11350: runaway iteration assertion.
      
      llvm-svn: 144935
      94904586
  9. Nov 17, 2011
  10. Nov 16, 2011
  11. Nov 15, 2011
  12. Nov 14, 2011
  13. Nov 11, 2011
  14. Nov 07, 2011
  15. Nov 03, 2011
  16. Nov 01, 2011
  17. Oct 24, 2011
  18. Oct 21, 2011
  19. Oct 20, 2011
    • Eli Friedman's avatar
      Refactor code from inlining and globalopt that checks whether a function... · 1923a330
      Eli Friedman authored
      Refactor code from inlining and globalopt that checks whether a function definition is unused, and enhance it so it can tell that functions which are only used by a blockaddress are in fact dead.  This probably doesn't happen much on most code, but the Linux kernel's _THIS_IP_ can trigger this issue with blockaddress.  (GlobalDCE can also handle the given tescase, but we only run that at -O3.)  Found while looking at PR11180.
      
      llvm-svn: 142572
      1923a330
  20. Oct 17, 2011
  21. Oct 11, 2011
    • Lang Hames's avatar
      Add a natural stack alignment field to TargetData, and prevent InstCombine from · de7ab801
      Lang Hames authored
      promoting allocas to preferred alignments that exceed the natural
      alignment. This avoids some potentially expensive dynamic stack realignments.
      
      The natural stack alignment is set in target data strings via the "S<size>"
      option. Size is in bits and must be a multiple of 8. The natural stack alignment
      defaults to "unspecified" (represented by a zero value), and the "unspecified"
      value does not prevent any alignment promotions. Target maintainers that care
      about avoiding promotions should explicitly add the "S<size>" option to their
      target data strings.
      
      llvm-svn: 141599
      de7ab801
  22. Oct 04, 2011
  23. Oct 02, 2011
  24. Sep 29, 2011
  25. Sep 27, 2011
  26. Sep 21, 2011
    • Bill Wendling's avatar
      Relax this condition. · a6e1c51e
      Bill Wendling authored
      Some passes require breaking critical edges before they're called. Don't
      segfault because of that.
      
      llvm-svn: 140196
      a6e1c51e
  27. Sep 20, 2011
  28. Sep 19, 2011
  29. Sep 05, 2011
  30. Aug 26, 2011
    • Benjamin Kramer's avatar
      Address review comments. · 0655b78c
      Benjamin Kramer authored
      - Reword comments.
      - Allow undefined behavior interfering with undefined behavior.
      - Add address space checks.
      
      llvm-svn: 138619
      0655b78c
    • Benjamin Kramer's avatar
      SimplifyCFG: If we have a PHI node that can evaluate to NULL and do a load or... · fb212a63
      Benjamin Kramer authored
      SimplifyCFG: If we have a PHI node that can evaluate to NULL and do a load or store to the address returned by the PHI node then we can consider this incoming value as dead and remove the edge pointing there, unless there are instructions that can affect control flow executed in between.
      
      In theory this could be extended to other instructions, eg. division by zero, but it's likely that it will "miscompile" some code because people depend on div by zero not trapping. NULL pointer dereference usually leads to a crash so we should be on the safe side.
      
      This shrinks the size of a Release clang by 16k on x86_64.
      
      llvm-svn: 138618
      fb212a63
  31. Aug 25, 2011
  32. Aug 24, 2011
Loading