LSRA allocates callee saved register to the first var (preferenced to a callee saved reg) that is encountered in linear order. Later when a more deserving var is found needing a callee saved register LSRA won't take it back from a less deserving candidate.
Put another way, improve heuristic to decided when LSRA should not allocate at all to a var preferenced to a callee saved reg.
Specifically LSRA is conservative with fp vars.
Example benchmarks:
SciMark FFT
Huffman
MemoryPoolIterator:CopyFrom()
category:cq
theme:register-allocator
skill-level:expert
cost:medium
LSRA allocates callee saved register to the first var (preferenced to a callee saved reg) that is encountered in linear order. Later when a more deserving var is found needing a callee saved register LSRA won't take it back from a less deserving candidate.
Put another way, improve heuristic to decided when LSRA should not allocate at all to a var preferenced to a callee saved reg.
Specifically LSRA is conservative with fp vars.
Example benchmarks:
SciMark FFT
Huffman
MemoryPoolIterator:CopyFrom()
category:cq
theme:register-allocator
skill-level:expert
cost:medium