summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveRangeEdit.h
Commit message (Collapse)AuthorAgeFilesLines
* Teach the inline spiller to attempt folding a load instruction into its singleJakob Stoklund Olesen2010-12-181-0/+6
| | | | | | | | | | | | | | | | | | use before rematerializing the load. This allows us to produce: addps LCPI0_1(%rip), %xmm2 Instead of: movaps LCPI0_1(%rip), %xmm3 addps %xmm3, %xmm2 Saving a register and an instruction. The standard spiller already knows how to do this. llvm-svn: 122133
* Simplify the LiveRangeEdit::canRematerializeAt() interface a bit.Jakob Stoklund Olesen2010-11-101-5/+5
| | | | llvm-svn: 118661
* Don't assign new registers created during a split to the same stack slot, butJakob Stoklund Olesen2010-11-011-4/+0
| | | | | | give them individual stack slots once the are actually spilled. llvm-svn: 117945
* Fix sign error.Jakob Stoklund Olesen2010-10-291-1/+1
| | | | llvm-svn: 117677
* After splitting, compute connected components of all new registers, not just forJakob Stoklund Olesen2010-10-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | the remainder register. Example: bb0: x = 1 bb1: use(x) ... x = 2 jump bb1 When x is isolated in bb1, the inner part breaks into two components, x1 and x2: bb0: x0 = 1 bb1: x1 = x0 use(x1) ... x2 = 2 x0 = x2 jump bb1 llvm-svn: 117408
* Move some of the InlineSpiller rematerialization code into LiveRangeEdit.Jakob Stoklund Olesen2010-10-201-5/+60
| | | | llvm-svn: 116951
* Move stack slot assignments into LiveRangeEdit.Jakob Stoklund Olesen2010-10-151-1/+6
| | | | | | | | | | All registers created during splitting or spilling are assigned to the same stack slot as the parent register. When splitting or rematting, we may not spill at all. In that case the stack slot is still assigned, but it will be dead. llvm-svn: 116546
* Create a new LiveRangeEdit class to keep track of the new registers created whenJakob Stoklund Olesen2010-10-141-0/+70
splitting or spillling, and to help with rematerialization. Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it possible to share remat code between InlineSpiller and SplitKit. llvm-svn: 116543
OpenPOWER on IntegriCloud