Skip to content
  1. Jun 22, 2011
  2. Jun 13, 2011
    • Jakob Stoklund Olesen's avatar
      Be less aggressive about hinting in RAFast. · fb03a92c
      Jakob Stoklund Olesen authored
      In particular, don't spill dirty registers only to satisfy a hint. It is
      not worth it.
      
      The attached test case provides an example where the fast allocator
      would spill a register when other registers are available.
      
      llvm-svn: 132900
      fb03a92c
  3. Jun 03, 2011
    • Jakob Stoklund Olesen's avatar
      Avoid calling TRI->getAllocatableSet in RAFast. · 4b0bb839
      Jakob Stoklund Olesen authored
      When compiling a program with lots of small functions like
      483.xalancbmk, this makes RAFast 11% faster.
      
      Add some comments to clarify the difference between unallocatable and
      reserved registers. It's quite subtle.
      
      The fast register allocator depends on EFLAGS' not being allocatable on
      x86. That way it can completely avoid tracking liveness, and it won't
      mind when there are multiple uses of a single def.
      
      llvm-svn: 132514
      4b0bb839
  4. Jun 02, 2011
  5. Apr 22, 2011
    • Evan Cheng's avatar
      Typo · 8ea3af47
      Evan Cheng authored
      llvm-svn: 129970
      8ea3af47
  6. Apr 18, 2011
  7. Apr 13, 2011
  8. Apr 12, 2011
  9. Feb 04, 2011
  10. Jan 10, 2011
  11. Jan 09, 2011
  12. Dec 08, 2010
  13. Oct 19, 2010
    • Owen Anderson's avatar
      Get rid of static constructors for pass registration. Instead, every pass... · 6c18d1aa
      Owen Anderson authored
      Get rid of static constructors for pass registration.  Instead, every pass exposes an initializeMyPassFunction(), which
      must be called in the pass's constructor.  This function uses static dependency declarations to recursively initialize
      the pass's dependencies.
      
      Clients that only create passes through the createFooPass() APIs will require no changes.  Clients that want to use the
      CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
      before parsing commandline arguments.
      
      I have tested this with all standard configurations of clang and llvm-gcc on Darwin.  It is possible that there are problems
      with the static dependencies that will only be visible with non-standard options.  If you encounter any crash in pass
      registration/creation, please send the testcase to me directly.
      
      llvm-svn: 116820
      6c18d1aa
  14. Sep 10, 2010
  15. Sep 03, 2010
  16. Sep 01, 2010
  17. Aug 31, 2010
  18. Aug 21, 2010
  19. Aug 06, 2010
  20. Aug 04, 2010
  21. Jul 29, 2010
    • Jakob Stoklund Olesen's avatar
      Fix a bug in the -regalloc=fast handling of exotic two-address instruction with · 36cf1190
      Jakob Stoklund Olesen authored
      multiple defs, like t2LDRSB_POST.
      
      The first def could accidentally steal the physreg that the second, tied def was
      required to be allocated to.
      
      Now, the tied use-def is treated more like an early clobber, and the physreg is
      reserved before allocating the other defs.
      
      This would never be a problem when the tied def was the only def which is the
      usual case.
      
      This fixes MallocBench/gs for thumb2 -O0.
      
      llvm-svn: 109715
      36cf1190
  22. Jul 20, 2010
  23. Jul 16, 2010
  24. Jul 09, 2010
  25. Jul 03, 2010
  26. Jun 29, 2010
    • Jakob Stoklund Olesen's avatar
      Fix the handling of partial redefines in the fast register allocator. · dadea5b1
      Jakob Stoklund Olesen authored
      A partial redefine needs to be treated like a tied operand, and the register
      must be reloaded while processing use operands.
      
      This fixes a bug where partially redefined registers were processed as normal
      defs with a reload added. The reload could clobber another use operand if it was
      a kill that allowed register reuse.
      
      llvm-svn: 107193
      dadea5b1
  27. Jun 28, 2010
    • Jakob Stoklund Olesen's avatar
      Add more special treatment for inline asm in RegAllocFast. · 0d94d7af
      Jakob Stoklund Olesen authored
      When an instruction has tied operands and physreg defines, we must take extra
      care that the tied operands conflict with neither physreg defs nor uses.
      
      The special treatment is given to inline asm and instructions with tied operands
      / early clobbers and physreg defines.
      
      This fixes PR7509.
      
      llvm-svn: 107043
      0d94d7af
  28. Jun 15, 2010
  29. Jun 04, 2010
  30. May 19, 2010
  31. May 18, 2010
    • Jakob Stoklund Olesen's avatar
      Properly handle multiple definitions of a virtual register in the same · 663543b4
      Jakob Stoklund Olesen authored
      instruction.
      
      This can happen on ARM:
      
      >> %reg1035:5<def>, %reg1035:6<def> = VLD1q16 %reg1028, 0, pred:14, pred:%reg0
      Regs: Q0=%reg1032* R0=%reg1028* R1=%reg1029* R2 R3=%reg1031*
      Killing last use: %reg1028
      Allocating %reg1035 from QPR
      Assigning %reg1035 to Q1
      << %D2<def>, %D3<def> = VLD1q16 %R0<kill>, 0, pred:14, pred:%reg0, %Q1<imp-def>
      
      llvm-svn: 104056
      663543b4
  32. May 17, 2010
Loading