llvm-6502/test
Quentin Colombet 1a10a51431 [RegAlloc] Add a last chance recoloring mechanism when everything else failed to
find a register.

The idea is to choose a color for the variable that cannot be allocated and
recolor its interferences around. Unlike the current register allocation scheme,
it is allowed to change the color of an already assigned (but maybe not
splittable or spillable) live interval while propagating this change to its
neighbors.
In other word, there are two things that may help finding an available color:
- Already assigned variables (RS_Done) can be recolored to different color.
- The recoloring allows to catch solutions that needs to touch more that just
  the neighbors of the current allocated variable.

E.g.,
vA can use {R1, R2    }
vB can use {    R2, R3}
vC can use {R1        }
Where vA, vB, and vC cannot be split anymore (they are reloads for instance) and
they all interfere.

vA is assigned R1
vB is assigned R2
vC tries to evict vA but vA is already done.
=> Regular register allocation heuristic fails.

Last chance recoloring kicks in:
vC does as if vA was evicted => vC uses R1.
vC is marked as fixed.
vA needs to find a color.
None are available.
vA cannot evict vC: vC is a fixed virtual register now.
vA does as if vB was evicted => vA uses R2.
vB needs to find a color.
R3 is available.
Recoloring => vC = R1, vA = R2, vB = R3.

<rdar://problem/15947839>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200883 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-05 22:13:59 +00:00
..
Analysis Fix crasher introduced in r200203 and caught by a libc++ buildbot. Don't assume that getMulExpr returns a SCEVMulExpr, it may have simplified it to something else! 2014-01-27 10:47:44 +00:00
Assembler Bug 18228 - Fix accepting bitcasts between vectors of pointers with a 2014-01-22 19:21:33 +00:00
Bindings Fix known typos 2014-01-24 17:20:08 +00:00
Bitcode Update testing case for r200806. 2014-02-04 23:53:12 +00:00
BugPoint Debug Info: update testing cases to specify the debug info version number. 2013-11-23 01:16:29 +00:00
CodeGen [RegAlloc] Add a last chance recoloring mechanism when everything else failed to 2014-02-05 22:13:59 +00:00
DebugInfo ARM: Enable use of relocation type tlsldo in debug info for tls data. 2014-02-05 07:23:09 +00:00
ExecutionEngine mips: XFAIL non-extern-addend-smallcodemodel test 2014-02-05 16:47:59 +00:00
Feature Debug Info: update testing cases to specify the debug info version number. 2013-11-23 01:16:29 +00:00
FileCheck
Instrumentation [asan] simplify a test 2014-01-29 07:35:43 +00:00
Integer
JitListener Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
Linker DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0} 2014-02-04 01:23:52 +00:00
LTO Provide a dummy section to fix a crash with inline assembly in LTO. 2014-01-22 22:11:14 +00:00
MC ARM: Resolve thumb_bl fixup in same MCFragment. 2014-02-05 14:15:16 +00:00
Object Add a test for printing absolute symbols in ELF. 2014-02-05 04:36:47 +00:00
Other [PM] Wire up the Verifier for the new pass manager and connect it to the 2014-01-20 11:34:08 +00:00
TableGen [TableGen] Correctly generate implicit anonymous prototype defs in multiclasses 2014-01-02 20:47:09 +00:00
tools llvm-cov: Implement the preserve-paths flag 2014-02-04 10:45:02 +00:00
Transforms SimplifyLibCalls: Push TLI through the exp2->ldexp transform. 2014-02-04 20:27:23 +00:00
Unit
Verifier [PM] Make the verifier work independently of any pass manager. 2014-01-19 02:22:18 +00:00
YAMLParser
.clang-format
CMakeLists.txt [CMake] Add llvm-tblgen to dependencies of check-llvm. 2014-01-18 19:01:08 +00:00
lit.cfg Reland r200340 - 'Add line table debug info to COFF files when using a win32 triple' 2014-01-30 01:39:17 +00:00
lit.site.cfg.in Eliminate inappropriate use of FindProgramByName() from lli 2014-01-22 21:52:35 +00:00
Makefile Eliminate inappropriate use of FindProgramByName() from lli 2014-01-22 21:52:35 +00:00
Makefile.tests
TestRunner.sh