mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Force coallescing of live ranges that have a single definition, even if they
interfere. Because these intervals have a single definition, and one of them is a copy instruction, they are always safe to merge even if their lifetimes interfere. This slightly reduces the amount of spill code, for example on 252.eon, from: 12837 spiller - Number of loads added 7604 spiller - Number of stores added 5842 spiller - Number of register spills 18155 liveintervals - Number of identity moves eliminated after coalescing to: 12754 spiller - Number of loads added 7585 spiller - Number of stores added 5803 spiller - Number of register spills 18262 liveintervals - Number of identity moves eliminated after coalescing The much much bigger win would be to merge intervals with multiple definitions (aka phi nodes) but this is not that day. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15124 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -36,6 +36,7 @@ namespace llvm {
|
||||
float weight; // weight of this interval:
|
||||
// (number of uses *10^loopDepth)
|
||||
Ranges ranges; // the ranges in which this register is live
|
||||
bool isDefinedOnce; // True if there is one def of this register
|
||||
|
||||
explicit LiveInterval(unsigned r);
|
||||
|
||||
|
Reference in New Issue
Block a user