Go to file
Quentin Colombet 87769713cf [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>

llvm-svn: 200883
2014-02-05 22:13:59 +00:00
clang Try to fix ppc bot failure. 2014-02-05 21:40:10 +00:00
clang-tools-extra Make the OptionCategory variable static. 2014-02-05 13:43:27 +00:00
compiler-rt [sanitizer] Fix build. 2014-02-05 20:04:12 +00:00
debuginfo-tests don't use CHECK-NEXT because it may be on the same line. 2013-09-18 23:01:54 +00:00
libclc Updated README.TXT with information about using DESTDIR and building with Ninja. 2014-01-29 20:03:28 +00:00
libcxx Support forward_list<Incomplete Type>. Patch by Zhihao Yuan! 2014-02-05 01:44:17 +00:00
libcxxabi Fix PR17222 - catching derived classes from thrown null pointer. Adds tests, too 2014-02-05 18:19:57 +00:00
lld [Mips] In case of executable file linking MIPS ABI requires to add even 2014-02-03 20:10:40 +00:00
lldb Don't print out "script" results twice. 2014-02-05 21:46:20 +00:00
llvm [RegAlloc] Add a last chance recoloring mechanism when everything else failed to 2014-02-05 22:13:59 +00:00
openmp For your Christmas hacking pleasure. 2013-12-23 17:28:57 +00:00
polly IndependentBlocks: Do not assert for PHI nodes outside of scops 2014-01-29 23:08:10 +00:00