Skip to content
  1. Oct 05, 2011
    • 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
  2. Oct 04, 2011
  3. Oct 02, 2011
  4. 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
  5. Sep 30, 2011
  6. Sep 29, 2011
  7. Sep 28, 2011
  8. Sep 27, 2011
  9. 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
  10. Sep 22, 2011
  11. Sep 21, 2011
  12. Sep 20, 2011
Loading