Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Add support for aggressive load-use-store folding. This takes care of the | Owen Anderson | 2009-01-29 | 1 | -19/+85 | |
| | | | | | | vast majority of code size regressions introduced by pre-alloc-splitting. llvm-svn: 63274 | |||||
* | Make the pre-split-limit option more useful by using a per-function counter. | Owen Anderson | 2009-01-27 | 1 | -1/+7 | |
| | | | | llvm-svn: 63091 | |||||
* | Reapply r63025 and r63026, with fixes for the failing testcases. | Owen Anderson | 2009-01-26 | 1 | -356/+13 | |
| | | | | llvm-svn: 63049 | |||||
* | Also revert r63206 | Bill Wendling | 2009-01-26 | 1 | -0/+321 | |
| | | | | llvm-svn: 63041 | |||||
* | Temporarily revert r63025 until the testsuite failures can be fixed. | Bill Wendling | 2009-01-26 | 1 | -12/+34 | |
| | | | | llvm-svn: 63040 | |||||
* | Get rid of a bunch of dead code now that interval reconstruction is enabled. | Owen Anderson | 2009-01-26 | 1 | -321/+0 | |
| | | | | llvm-svn: 63026 | |||||
* | Fix an issue where LiveIntervals was trying to be smart about removing kill | Owen Anderson | 2009-01-26 | 1 | -34/+12 | |
| | | | | | | | | | markers, and ended up foiling the interval reconstruction. This allows us to turn on reconstruction in the pre alloc splitter, which fixes a number of miscompilations. llvm-svn: 63025 | |||||
* | Silence a bogus compiler warning. | Evan Cheng | 2009-01-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 63021 | |||||
* | Some cleanups. No functional changes. | Owen Anderson | 2009-01-24 | 1 | -26/+34 | |
| | | | | llvm-svn: 62917 | |||||
* | Stage two of fixing pre-alloc-splitting's code size issues: filter out ↵ | Owen Anderson | 2009-01-23 | 1 | -9/+37 | |
| | | | | | | | | | | restores that are just going to be re-spilled again. This also helps performance. Pre-alloc-splitting now seems to be an overall win on SPEC. llvm-svn: 62834 | |||||
* | Add an initial pass at dead spill/restore removal for pre alloc splitting. | Owen Anderson | 2009-01-23 | 1 | -4/+56 | |
| | | | | llvm-svn: 62821 | |||||
* | I accidentally removed this check in an earlier commit, which cause breakage ↵ | Owen Anderson | 2009-01-21 | 1 | -0/+4 | |
| | | | | | | in the pre alloc splitter. llvm-svn: 62678 | |||||
* | Be more aggressive about renumbering vregs after splitting them. | Owen Anderson | 2009-01-21 | 1 | -3/+7 | |
| | | | | llvm-svn: 62639 | |||||
* | Change TargetInstrInfo::isMoveInstr to return source and destination ↵ | Evan Cheng | 2009-01-20 | 1 | -3/+3 | |
| | | | | | | sub-register indices as well. llvm-svn: 62600 | |||||
* | More two-address fixes. This gets lua working with join-creation enabled. | Owen Anderson | 2009-01-12 | 1 | -6/+10 | |
| | | | | llvm-svn: 62073 | |||||
* | The phi construction algorithm used for interval reconstruction is ↵ | Owen Anderson | 2009-01-06 | 1 | -13/+27 | |
| | | | | | | | | | | | complicated by two address instructions. We need to keep track of things we've processed AS USES independetly of whether we've processed them as defs. This fixes all known miscompilations when reconstruction is turned on. llvm-svn: 61802 | |||||
* | Get rid of sentinel insertion in interval reconstruction. It just masked the | Owen Anderson | 2009-01-05 | 1 | -5/+0 | |
| | | | | | | problem, rather than fixing it. The problem has now been fixed the right way. llvm-svn: 61723 | |||||
* | Get live interval reconstruction several steps closer to working. | Owen Anderson | 2008-12-31 | 1 | -66/+86 | |
| | | | | llvm-svn: 61514 | |||||
* | Add braces, as suggested by a gcc warning. | Duncan Sands | 2008-12-29 | 1 | -4/+6 | |
| | | | | llvm-svn: 61465 | |||||
* | Fix up kill/dead marking in the new live interval reconstruction code. | Owen Anderson | 2008-12-28 | 1 | -6/+18 | |
| | | | | llvm-svn: 61460 | |||||
* | Add prototype code for recomputing a live interval's ranges and valnos ↵ | Owen Anderson | 2008-12-28 | 1 | -1/+260 | |
| | | | | | | through recursive phi construction. llvm-svn: 61458 | |||||
* | Re-apply r61158 in a form that no longer breaks tests. | Owen Anderson | 2008-12-18 | 1 | -36/+61 | |
| | | | | llvm-svn: 61182 | |||||
* | Revert r61158 for now, as it caused some test failures. | Owen Anderson | 2008-12-17 | 1 | -46/+36 | |
| | | | | llvm-svn: 61159 | |||||
* | Fix miscompilations caused by renumbering, and enable it as part of prealloc ↵ | Owen Anderson | 2008-12-17 | 1 | -36/+46 | |
| | | | | | | splitting. llvm-svn: 61158 | |||||
* | Add code to renumber split intervals into new vregs. This is disabled for ↵ | Owen Anderson | 2008-12-16 | 1 | -0/+48 | |
| | | | | | | now until I finish working out some iterator invalidation issues. llvm-svn: 61104 | |||||
* | Switch to top-down mode and fix a crasher this exposed caused by an error in the | Owen Anderson | 2008-12-07 | 1 | -1/+11 | |
| | | | | | | live interval updating. llvm-svn: 60652 | |||||
* | Factor out some common code. | Owen Anderson | 2008-12-04 | 1 | -76/+39 | |
| | | | | llvm-svn: 60553 | |||||
* | Add support for folding spills into preceding defs when doing pre-alloc ↵ | Owen Anderson | 2008-12-02 | 1 | -27/+101 | |
| | | | | | | splitting. llvm-svn: 60433 | |||||
* | Add support for rematerialization in pre-alloc-splitting. | Owen Anderson | 2008-11-19 | 1 | -3/+95 | |
| | | | | llvm-svn: 59587 | |||||
* | Fix a bug introduced by my previous patch. With this change, SPEC is now ↵ | Owen Anderson | 2008-11-18 | 1 | -1/+1 | |
| | | | | | | clean with prealloc splitting enabled. llvm-svn: 59544 | |||||
* | Don't allow the restore point to be placed after terminators. With this change, | Owen Anderson | 2008-11-13 | 1 | -2/+2 | |
| | | | | | | | MultiSource/Applications is clean with the prealloc splitter. Some failures remain in SPEC. llvm-svn: 59267 | |||||
* | Don't walk into predecessors in which the vreg is not live when doing ↵ | Owen Anderson | 2008-11-11 | 1 | -0/+2 | |
| | | | | | | | | shrinkwrapping. This lets several failing tests get farther along, but doesn't completely fix any of them. llvm-svn: 59086 | |||||
* | Use the new predicate to control when we do prealloc splitting. Fix a small ↵ | Owen Anderson | 2008-11-05 | 1 | -1/+5 | |
| | | | | | | bug. llvm-svn: 58738 | |||||
* | First pass at checking for the creation of a new join point when doing ↵ | Owen Anderson | 2008-11-04 | 1 | -0/+73 | |
| | | | | | | pre-alloc splitting. This is not turned on yet. llvm-svn: 58726 | |||||
* | Revert my last patch until I consult with Evan about it. | Owen Anderson | 2008-11-03 | 1 | -10/+0 | |
| | | | | llvm-svn: 58591 | |||||
* | Don't do pre-splitting if doing so would create a value join that did not | Owen Anderson | 2008-11-02 | 1 | -0/+10 | |
| | | | | | | | | | 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 | |||||
* | Add a fixme. | Evan Cheng | 2008-10-31 | 1 | -0/+3 | |
| | | | | llvm-svn: 58514 | |||||
* | - More pre-split fixes: spill slot live interval computation bug; restore ↵ | Evan Cheng | 2008-10-29 | 1 | -38/+93 | |
| | | | | | | | | point bug. - If a def is spilt, remember its spill index to allow its reuse. llvm-svn: 58375 | |||||
* | - Rewrite code that update register live interval that's split. | Evan Cheng | 2008-10-29 | 1 | -81/+152 | |
| | | | | | | | - Create and update spill slot live intervals. - Lots of bug fixes. llvm-svn: 58367 | |||||
* | If def is in the same mbb as the barrier, spilt the value after the last use ↵ | Evan Cheng | 2008-10-28 | 1 | -8/+18 | |
| | | | | | | before the barrier. llvm-svn: 58314 | |||||
* | Add command line option to limit the number splits to help debugging. | Evan Cheng | 2008-10-28 | 1 | -3/+7 | |
| | | | | llvm-svn: 58312 | |||||
* | Avoid putting a split past the end of the live range; always shrink wrap ↵ | Evan Cheng | 2008-10-28 | 1 | -11/+20 | |
| | | | | | | live interval in the barrier mbb. llvm-svn: 58309 | |||||
* | Silence a bogus compile time warning. | Evan Cheng | 2008-10-27 | 1 | -1/+1 | |
| | | | | llvm-svn: 58297 | |||||
* | Remove val# defined by a remat'ed def that is now dead. | Evan Cheng | 2008-10-27 | 1 | -0/+3 | |
| | | | | llvm-svn: 58294 | |||||
* | For now, don't split live intervals around x87 stack register barriers. ↵ | Evan Cheng | 2008-10-27 | 1 | -0/+2 | |
| | | | | | | 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 | |||||
* | Do not shrink wrap live interval in a mbb if it's livein any of its ↵ | Evan Cheng | 2008-10-26 | 1 | -6/+21 | |
| | | | | | | successor blocks. The mbb can be revisited again after all of the successors are processed. llvm-svn: 58184 | |||||
* | Handle cases where there aren't uses in the barrier mbb. | Evan Cheng | 2008-10-25 | 1 | -1/+5 | |
| | | | | llvm-svn: 58174 | |||||
* | If val# def is ~0U, meaning it's defined by a PHI, and it's previously ↵ | Evan Cheng | 2008-10-25 | 1 | -9/+11 | |
| | | | | | | 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 | |||||
* | Fix a pasto. | Evan Cheng | 2008-10-24 | 1 | -1/+1 | |
| | | | | llvm-svn: 58102 | |||||
* | Fix a end() dereference; remove an abort() that wasn't meant to be left in. | Evan Cheng | 2008-10-24 | 1 | -5/+4 | |
| | | | | llvm-svn: 58072 |