Skip to content
  1. Oct 11, 2011
    • Andrew Trick's avatar
      Add experimental -enable-lsr-phielim option. · ecbe22bb
      Andrew Trick authored
      I'm not sure we will need it in the long run, but the option is
      currently useful for checking if the output of LSR is "clean".
      
      llvm-svn: 141634
      ecbe22bb
    • Andrew Trick's avatar
      Move replaceCongruentIVs into SCEVExapander and bias toward "expanded" · f9201c57
      Andrew Trick authored
      IVs.
      
      Indvars previously chose randomly between congruent IVs. Now it will
      bias the decision toward IVs that SCEVExpander likes to create. This
      was not done to fix any problem, it's just a welcome side effect of
      factoring code.
      
      llvm-svn: 141633
      f9201c57
    • 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
  2. Oct 08, 2011
  3. Oct 07, 2011
  4. Oct 06, 2011
    • Eli Friedman's avatar
      PR11061: Make simplifylibcalls fold strcmp("", x) correctly. · 3e3aecbc
      Eli Friedman authored
      While I'm here, fix the related issue with strncmp, add some actual tests for strcmp and strncmp, and start using StringRef::compare for constant folding instead of using strcmp/strncmp so that the optimized IR isn't dependent on the host's implementation of strcmp.
      
      llvm-svn: 141227
      3e3aecbc
  5. Oct 05, 2011
    • Jim Grosbach's avatar
      Re-commit 141203, but much more conservative. · e7abae04
      Jim Grosbach authored
      Just pull the instruction name, but don't change the order of anything
      else. That keeps --debug happy and non-crashing, but doesn't change
      how the worklist gets built.
      
      llvm-svn: 141210
      e7abae04
    • Jim Grosbach's avatar
      Revert 141203. InstCombine is looping on unit tests. · 8f9acfac
      Jim Grosbach authored
      llvm-svn: 141209
      8f9acfac
    • Jim Grosbach's avatar
      Update InstCombine worklist after instruction transform is complete. · e37e0301
      Jim Grosbach authored
      When updating the worklist for InstCombine, the Add/AddUsersToWorklist
      functions may access the instruction(s) being added, for debug output for
      example. If the instructions aren't yet added to the basic block, this
      can result in a crash. Finish the instruction transformation before
      adjusting the worklist instead.
      
      rdar://10238555
      
      llvm-svn: 141203
      e37e0301
    • Duncan Sands's avatar
      GVN does simple propagation of conditions: when it sees a conditional · f4f47ccd
      Duncan Sands authored
      branch "br i1 %x, label %if_true, label %if_false" then it replaces
      "%x" with "true" in places only reachable via the %if_true arm, and
      with "false" in places only reachable via the %if_false arm.  Except
      that actually it doesn't: if value numbering shows that %y is equal
      to %x then, yes, %y will be turned into true/false in this way, but
      any occurrences of %x itself are not transformed.  Fix this.  What's
      more, it's often the case that %x is an equality comparison such as
      "%x = icmp eq %A, 0", in which case every occurrence of %A that is
      only reachable via the %if_true arm can be replaced with 0.  Implement
      this and a few other variations on this theme.  This reduces the number
      of lines of LLVM IR in "GCC as one big file" by 0.2%.  It has a bigger
      impact on Ada code, typically reducing the number of lines of bitcode
      by around 0.4% by removing repeated compiler generated checks.  Passes
      the LLVM nightly testsuite and the Ada ACATS testsuite.
      
      llvm-svn: 141177
      f4f47ccd
    • Duncan Sands's avatar
      Generalize GVN's conditional propagation logic slightly: · e90dd058
      Duncan Sands authored
      it's OK for the false/true destination to have multiple
      predecessors as long as the extra ones are dominated by
      the branch destination.
      
      llvm-svn: 141176
      e90dd058
  6. Oct 04, 2011
  7. Oct 02, 2011
  8. Oct 01, 2011
    • Andrew Trick's avatar
      Inlining and unrolling heuristics should be aware of free truncs. · f7656015
      Andrew Trick authored
      We want heuristics to be based on accurate data, but more importantly
      we don't want llvm to behave randomly. A benign trunc inserted by an
      upstream pass should not cause a wild swings in optimization
      level. See PR11034. It's a general problem with threshold-based
      heuristics, but we can make it less bad.
      
      llvm-svn: 140919
      f7656015
    • Andrew Trick's avatar
      whitespace · caa500bf
      Andrew Trick authored
      llvm-svn: 140916
      caa500bf
  9. Sep 30, 2011
  10. Sep 29, 2011
  11. Sep 28, 2011
  12. Sep 27, 2011
  13. Sep 24, 2011
    • Andrew Trick's avatar
      LSR minor bug fix in RateRegister. · 8b2fe2f7
      Andrew Trick authored
      No test case. Noticed by inspection and I doubt it ever affects the
      outcome of the overall heuristic, let alone final codegen.
      
      llvm-svn: 140431
      8b2fe2f7
  14. Sep 22, 2011
  15. Sep 21, 2011
Loading