Skip to content
  1. May 21, 2010
  2. May 20, 2010
  3. May 17, 2010
  4. May 15, 2010
  5. May 10, 2010
  6. May 05, 2010
    • Evan Cheng's avatar
      Teach liveintervalanalysis about virtual registers which are defined by... · 38d9a6f8
      Evan Cheng authored
      Teach liveintervalanalysis about virtual registers which are defined by reg_sequence instructions that are formed by registers defined by distinct instructions. e.g.
      80      %reg1041:6<def> = VSHRNv4i16 %reg1034<kill>, 12, pred:14, pred:%reg0
      . . .
      120     %reg1041:5<def> = VSHRNv4i16 %reg1039<kill>, 12, pred:14, pred:%reg0
      
      llvm-svn: 103102
      38d9a6f8
  7. May 04, 2010
    • Evan Cheng's avatar
      Teach PHI elimination to remove REG_SEQUENCE instructions and update... · 4c908f41
      Evan Cheng authored
      Teach PHI elimination to remove REG_SEQUENCE instructions and update references of the source operands with references of the destination with subreg indices. e.g.
      %reg1029<def>, %reg1030<def> = VLD1q16 %reg1024<kill>, ...
      %reg1031<def> = REG_SEQUENCE %reg1029<kill>, 5, %reg1030<kill>, 6
      =>
      %reg1031:5<def>, %reg1031:6<def> = VLD1q16 %reg1024<kill>, ...
      
      PHI elimination now does more than phi elimination. It is really a de-SSA pass.
      
      llvm-svn: 103039
      4c908f41
  8. May 03, 2010
  9. Apr 29, 2010
  10. Apr 26, 2010
  11. Apr 13, 2010
  12. Apr 08, 2010
  13. Mar 30, 2010
  14. Mar 24, 2010
    • Bob Wilson's avatar
      Revert Edwin's change that is breaking MultiSource/Applications/ClamAV/clamscan. · 4d87012e
      Bob Wilson authored
      --- Reverse-merging r99400 into '.':
      D    test/CodeGen/Generic/2010-03-24-liveintervalleak.ll
      U    lib/CodeGen/LiveIntervalAnalysis.cpp
      
      llvm-svn: 99419
      4d87012e
    • Torok Edwin's avatar
      Fix memory leak in liveintervals: the destructor for VNInfos must be called, · 4bbfdd41
      Torok Edwin authored
      otherwise the SmallVector it contains doesn't free its memory.
      In most cases LiveIntervalAnalysis could get away by not calling the destructor,
      because VNInfos are bumpptr-allocated, and smallvectors usually don't grow.
      However when the SmallVector does grow it always leaks.
      
      This is the valgrind shown leak from the original testcase:
      ==8206== 18,304 bytes in 151 blocks are definitely lost in loss record 164 of 164
      ==8206==    at 0x4A079C7: operator new(unsigned long) (vg_replace_malloc.c:220)
      ==8206==    by 0x4DB7A7E: llvm::SmallVectorBase::grow_pod(unsigned long, unsigned long) (in /home/edwin/clam/git/builds/defaul
      t/libclamav/.libs/libclamav.so.6.1.0)
      ==8206==    by 0x4F90382: llvm::VNInfo::addKill(llvm::SlotIndex) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libcl
      amav.so.6.1.0)
      ==8206==    by 0x5126B5C: llvm::LiveIntervals::handleVirtualRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::M
      achineInstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int, llvm::LiveInterval&) (in /home/edwin/clam/git/builds/defau
      lt/libclamav/.libs/libclamav.so.6.1.0)
      ==8206==    by 0x512725E: llvm::LiveIntervals::handleRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::MachineI
      nstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav
      .so.6.1.0)
      ==8206==    by 0x51278A8: llvm::LiveIntervals::computeIntervals() (in /home/edwin/clam/git/builds/default/libclamav/.libs/libc
      lamav.so.6.1.0)
      ==8206==    by 0x5127CB4: llvm::LiveIntervals::runOnMachineFunction(llvm::MachineFunction&) (in /home/edwin/clam/git/builds/de
      fault/libclamav/.libs/libclamav.so.6.1.0)
      ==8206==    by 0x4DAE935: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
      v/.libs/libclamav.so.6.1.0)
      ==8206==    by 0x4DAEB10: llvm::FunctionPassManagerImpl::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
      v/.libs/libclamav.so.6.1.0)
      ==8206==    by 0x4DAED3D: llvm::FunctionPassManager::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclamav/.l
      ibs/libclamav.so.6.1.0)
      ==8206==    by 0x4D8BE8E: llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*, llvm::MutexGuard const&) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)
      ==8206==    by 0x4D8CA72: llvm::JIT::getPointerToFunction(llvm::Function*) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)
      
      llvm-svn: 99400
      4bbfdd41
  15. Mar 16, 2010
  16. Mar 11, 2010
    • Evan Cheng's avatar
      The check for coalescing a virtual register to a physical register, e.g. · 8c4df816
      Evan Cheng authored
      cl = EXTRACT_SUBREG reg1024, 1, is overly conservative. It should check
      for overlaps of vr's live interval with the super registers of the
      physical register (ECX in this case) and let JoinIntervals() handle checking
      the coalescing feasibility against the physical register (cl in this case).
      
      llvm-svn: 98251
      8c4df816
  17. Mar 10, 2010
  18. Mar 01, 2010
  19. Feb 23, 2010
  20. Feb 18, 2010
    • Jakob Stoklund Olesen's avatar
      Always normalize spill weights, also for intervals created by spilling. · c953acbd
      Jakob Stoklund Olesen authored
      Moderate the weight given to very small intervals.
      
      The spill weight given to new intervals created when spilling was not
      normalized in the same way as the original spill weights calculated by
      CalcSpillWeights. That meant that restored registers would tend to hang around
      because they had a much higher spill weight that unspilled registers.
      
      This improves the runtime of a few tests by up to 10%, and there are no
      significant regressions.
      
      llvm-svn: 96613
      c953acbd
  21. Feb 10, 2010
  22. Feb 09, 2010
  23. Feb 06, 2010
    • Evan Cheng's avatar
      Run codegen dce pass for all targets at all optimization levels. Previously it's · ea5c6be7
      Evan Cheng authored
      only run for x86 with fastisel. I've found it being very effective in
      eliminating some obvious dead code as result of formal parameter lowering
      especially when tail call optimization eliminated the need for some of the loads
      from fixed frame objects. It also shrinks a number of the tests. A couple of
      tests no longer make sense and are now eliminated.
      
      llvm-svn: 95493
      ea5c6be7
  24. Jan 22, 2010
  25. Jan 04, 2010
    • David Greene's avatar
      · 1a51a211
      David Greene authored
      Change errs() to dbgs().
      
      llvm-svn: 92529
      1a51a211
  26. Dec 22, 2009
  27. Dec 16, 2009
    • Jakob Stoklund Olesen's avatar
      Reuse lowered phi nodes. · ec20a88a
      Jakob Stoklund Olesen authored
      Tail duplication produces lots of identical phi nodes in different basic
      blocks. Teach PHIElimination to reuse the join registers when lowering a phi
      node that is identical to an already lowered node. This saves virtual
      registers, and more importantly it avoids creating copies the the coalescer
      doesn't know how to eliminate.
      
      Teach LiveIntervalAnalysis about the phi joins with multiple uses.
      
      This patch significantly reduces code size produced by -pre-regalloc-taildup.
      
      llvm-svn: 91549
      ec20a88a
Loading