|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| ... |  | 
| | 
| 
| 
| 
| 
| 
| | If a phi-def value were removed from the interval, the phi-kill flags are no
longer valid.
llvm-svn: 110949 | 
| | 
| 
| 
| | llvm-svn: 110940 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | Before spilling a live range, we split it into a separate range for each basic
block where it is used. That way we only get one reload per basic block if the
new smaller ranges can allocate to a register.
This type of splitting is already present in the standard spiller.
llvm-svn: 110934 | 
| | 
| 
| 
| | llvm-svn: 110720 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | When splitting a live range, the new registers have fewer uses and the
permissible register class may be less constrained. Recompute the register class
constraint from the uses of new registers created for a split. This may let them
be allocated from a larger set, possibly avoiding a spill.
llvm-svn: 110703 | 
| | 
| 
| 
| 
| 
| | during live range splitting.
llvm-svn: 110686 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | necessary.
Sometimes, live range splitting doesn't shrink the current interval, but simply
changes some instructions to use a new interval. That makes the original more
suitable for spilling. In this case, we don't need to duplicate the original.
llvm-svn: 110481 | 
| | 
| 
| 
| 
| 
| 
| | After heavy editing of a live interval, it is much easier to simply renumber the
live values instead of trying to keep track of the unused ones.
llvm-svn: 110463 | 
| | 
| 
| 
| | llvm-svn: 110453 | 
| | 
| 
| 
| 
| 
| 
| | We are now at a point where we can split around simple single-entry, single-exit
loops, although still with some bugs.
llvm-svn: 110257 | 
| | 
| 
| 
| 
| 
| 
| 
| | rewrite instructions for live range splitting.
Still work in progress.
llvm-svn: 109469 | 
| | 
| 
| 
| 
| 
| 
| 
| | The spillers can pluck the analyses they need from the pass reference.
Switch some never-null pointers to references.
llvm-svn: 108969 | 
| | 
| 
| 
| 
| 
| 
| | Determine which loop exit blocks need a 'pre-exit' block inserted.
Recognize when this would be impossible.
llvm-svn: 108941 | 
| | 
| 
| 
| | llvm-svn: 108845 | 
|  | This is a work in progress. So far we have some basic loop analysis to help
determine where it is useful to split a live range around a loop.
The actual loop splitting code from Splitter.cpp is also going to move in here.
llvm-svn: 108842 |