Skip to content
  1. Sep 11, 2006
  2. Sep 10, 2006
  3. Sep 09, 2006
  4. Sep 07, 2006
    • Chris Lattner's avatar
      Throttle back tail duplication to avoid creating really ugly sequences of code. · c465046e
      Chris Lattner authored
      For Transforms/TailDup/if-tail-dup.ll, f.e., it produces:
      
      _foo:
              movl 8(%esp), %eax
              movl 4(%esp), %ecx
              testl $1, %ecx
              je LBB1_2       #cond_next
      LBB1_1: #cond_true
              movl $1, (%eax)
      LBB1_2: #cond_next
              testl $2, %ecx
              je LBB1_4       #cond_next10
      LBB1_3: #cond_true6
              movl $1, 4(%eax)
      LBB1_4: #cond_next10
              testl $4, %ecx
              je LBB1_6       #cond_next18
      LBB1_5: #cond_true14
              movl $1, 8(%eax)
      LBB1_6: #cond_next18
              testl $8, %ecx
              je LBB1_8       #return
      LBB1_7: #cond_true22
              movl $1, 12(%eax)
              ret
      LBB1_8: #return
              ret
      
      instead of:
      
      _foo:
              movl 4(%esp), %eax
              testl $2, %eax
              sete %cl
              movl 8(%esp), %edx
              testl $1, %eax
              je LBB1_2       #cond_next
      LBB1_1: #cond_true
              movl $1, (%edx)
              testb %cl, %cl
              jne LBB1_4      #cond_next10
              jmp LBB1_3      #cond_true6
      LBB1_2: #cond_next
              testb %cl, %cl
              jne LBB1_4      #cond_next10
      LBB1_3: #cond_true6
              movl $1, 4(%edx)
              testl $4, %eax
              je LBB1_6       #cond_next18
              jmp LBB1_5      #cond_true14
      LBB1_4: #cond_next10
              testl $4, %eax
              je LBB1_6       #cond_next18
      LBB1_5: #cond_true14
              movl $1, 8(%edx)
              testl $8, %eax
              je LBB1_8       #return
              jmp LBB1_7      #cond_true22
      LBB1_6: #cond_next18
              testl $8, %eax
              je LBB1_8       #return
      LBB1_7: #cond_true22
              movl $1, 12(%edx)
              ret
      LBB1_8: #return
              ret
      
      llvm-svn: 30158
      c465046e
  5. Sep 05, 2006
  6. Sep 04, 2006
  7. Sep 02, 2006
  8. Sep 01, 2006
  9. Aug 31, 2006
  10. Aug 30, 2006
  11. Aug 29, 2006
  12. Aug 28, 2006
  13. Aug 27, 2006
  14. Aug 26, 2006
  15. Aug 25, 2006
  16. Aug 24, 2006
  17. Aug 18, 2006
  18. Aug 14, 2006
  19. Aug 12, 2006
    • Chris Lattner's avatar
      Don't attempt to split subloops out of a loop with a huge number of backedges. · f18b396c
      Chris Lattner authored
      Not only will this take huge amounts of compile time, the resultant loop nests
      won't be useful for optimization.  This reduces loopsimplify time on
      Transforms/LoopSimplify/2006-08-11-LoopSimplifyLongTime.ll from ~32s to ~0.4s
      with a debug build of llvm on a 2.7Ghz G5.
      
      llvm-svn: 29647
      f18b396c
    • Chris Lattner's avatar
      Reimplement the loopsimplify code which deletes edges from unreachable · 85d9944f
      Chris Lattner authored
      blocks that target loop blocks.
      
      Before, the code was run once per loop, and depended on the number of
      predecessors each block in the loop had.  Unfortunately, scanning preds can
      be really slow when huge numbers of phis exist or when phis with huge numbers
      of inputs exist.
      
      Now, the code is run once per function and scans successors instead of preds,
      which is far faster.  In addition, the new code is simpler and is goto free,
      woo.
      
      This change speeds up a nasty testcase Duraid provided me from taking hours to
      taking ~72s with a debug build.  The functionality this implements is already
      tested in the testsuite as Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll.
      
      llvm-svn: 29644
      85d9944f
  20. Aug 08, 2006
    • Reid Spencer's avatar
      Make this example pass use some things from lib/Support (EscapeString, · 2b6d18a6
      Reid Spencer authored
      SlowOperatingInfo, Statistics). Besides providing an example of how to
      use these facilities, it also serves to debug problems with runtime linking
      when dlopening a loadable module. These three support facilities exercise
      different combinations of Text/Weak Weak/Text and Text/Text linking
      between the executable and the module.
      
      llvm-svn: 29552
      2b6d18a6
    • Reid Spencer's avatar
      For PR780: · e6458c3f
      Reid Spencer authored
      1. Change the usage of LOADABLE_MODULE so that it implies all the things
         necessary to make a loadable module. This reduces the user's burdern to
         get a loadable module correctly built.
      2. Document the usage of LOADABLE_MODULE in the MakefileGuide
      3. Adjust the makefile for lib/Transforms/Hello to use the new specification
         for building loadable modules
      4. Adjust the sample project to not attempt to build a shared library for
         its little library. This was just wasteful and not instructive at all.
      
      llvm-svn: 29551
      e6458c3f
  21. Aug 03, 2006
    • Chris Lattner's avatar
      Fix PR867 (and maybe 868) and testcsae: · c9009d91
      Chris Lattner authored
      Transforms/SimplifyCFG/2006-08-03-Crash.ll
      
      llvm-svn: 29515
      c9009d91
    • Chris Lattner's avatar
      · 3ff62017
      Chris Lattner authored
      Changes:
        1. Update an obsolete comment.
        2. Make the sorting by base an explicit (though still N^2) step, so
           that the code is more clear on what it is doing.
        3. Partition uses so that uses inside the loop are handled before uses
           outside the loop.
      
      Note that none of these changes currently changes the code inserted by LSR,
      but they are a stepping stone to getting there.
      
      This code is the result of some crazy pair programming with Nate. :)
      
      llvm-svn: 29493
      3ff62017
  22. Aug 02, 2006
    • Chris Lattner's avatar
      Add special check to avoid isLoop call. Simple, but doesn't seem to speed · 38b6e838
      Chris Lattner authored
      up lcssa much in practice.
      
      llvm-svn: 29465
      38b6e838
    • Chris Lattner's avatar
      Replace the SSA update code in LCSSA with a bottom-up approach instead of a top · 5a2bc786
      Chris Lattner authored
      down approach, inspired by discussions with Tanya.
      
      This approach is significantly faster, because it does not need dominator
      frontiers and it does not insert extraneous unused PHI nodes.  For example, on
      252.eon, in a release-asserts build, this speeds up LCSSA (which is the slowest
      pass in gccas) from 9.14s to 0.74s on my G5.  This code is also slightly smaller
      and significantly simpler than the old code.
      
      Amusingly, in a normal Release build (which includes the
      "assert(L->isLCSSAForm());" assertion), asserting that the result of LCSSA
      is in LCSSA form is actually slower than the LCSSA transformation pass
      itself on 252.eon.  I will see if Loop::isLCSSAForm can be sped up next.
      
      llvm-svn: 29463
      5a2bc786
  23. Jul 27, 2006
  24. Jul 20, 2006
Loading