Owen Anderson
6d82fd0e8e
Revert my last patch until I consult with Evan about it.
...
llvm-svn: 58591
2008-11-03 02:33:28 +00:00
Owen Anderson
146d114669
Don't do pre-splitting if doing so would create a value join that did not
...
exist before. Updating the live intervals in that care is tricky in the general
case.
Evan, if you see a tighter guard condition for this, let me know.
llvm-svn: 58560
2008-11-02 08:08:18 +00:00
Evan Cheng
d3b31c4fe1
Add a fixme.
...
llvm-svn: 58514
2008-10-31 16:41:59 +00:00
Evan Cheng
6125b9e097
- More pre-split fixes: spill slot live interval computation bug; restore point bug.
...
- If a def is spilt, remember its spill index to allow its reuse.
llvm-svn: 58375
2008-10-29 08:39:34 +00:00
Evan Cheng
cd21d433bb
- Rewrite code that update register live interval that's split.
...
- Create and update spill slot live intervals.
- Lots of bug fixes.
llvm-svn: 58367
2008-10-29 05:06:14 +00:00
Evan Cheng
8f9bfa5bff
If def is in the same mbb as the barrier, spilt the value after the last use before the barrier.
...
llvm-svn: 58314
2008-10-28 05:28:21 +00:00
Evan Cheng
6242a4f47b
Add command line option to limit the number splits to help debugging.
...
llvm-svn: 58312
2008-10-28 01:48:24 +00:00
Evan Cheng
9bbf76a1e9
Avoid putting a split past the end of the live range; always shrink wrap live interval in the barrier mbb.
...
llvm-svn: 58309
2008-10-28 00:47:49 +00:00
Evan Cheng
420490d6c4
Silence a bogus compile time warning.
...
llvm-svn: 58297
2008-10-27 23:29:28 +00:00
Evan Cheng
056ef89e68
Remove val# defined by a remat'ed def that is now dead.
...
llvm-svn: 58294
2008-10-27 23:21:01 +00:00
Evan Cheng
3bcbccf563
For now, don't split live intervals around x87 stack register barriers. FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them.
...
llvm-svn: 58230
2008-10-27 07:14:50 +00:00
Evan Cheng
8a7f04e7c2
Do not shrink wrap live interval in a mbb if it's livein any of its successor blocks. The mbb can be revisited again after all of the successors are processed.
...
llvm-svn: 58184
2008-10-26 07:49:03 +00:00
Evan Cheng
db1c135283
Handle cases where there aren't uses in the barrier mbb.
...
llvm-svn: 58174
2008-10-25 23:49:39 +00:00
Evan Cheng
0c78ace7dc
If val# def is ~0U, meaning it's defined by a PHI, and it's previously split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot.
...
llvm-svn: 58129
2008-10-25 00:52:41 +00:00
Evan Cheng
cfd2ecd29f
Fix a pasto.
...
llvm-svn: 58102
2008-10-24 18:46:44 +00:00
Evan Cheng
efb8edb805
Fix a end() dereference; remove an abort() that wasn't meant to be left in.
...
llvm-svn: 58072
2008-10-24 05:53:44 +00:00
Evan Cheng
a7a0aabf99
Avoid splitting an interval multiple times; avoid splitting re-materializable val# (for now).
...
llvm-svn: 58068
2008-10-24 02:05:00 +00:00
Evan Cheng
c906d4938e
Committing a good chunk of the pre-register allocation live interval splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible.
...
llvm-svn: 58044
2008-10-23 20:43:13 +00:00
Evan Cheng
1bc92a1aa6
Add skeleton for the pre-register allocation live interval splitting pass.
...
llvm-svn: 57847
2008-10-20 21:44:59 +00:00