aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Fix analysis name.Alkis Evlogimenos2004-07-211-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15078 91177308-0d34-0410-b5e6-96231b3b80d8
* Clear spilled list at once. Remove unused vector.Alkis Evlogimenos2004-07-211-3/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15073 91177308-0d34-0410-b5e6-96231b3b80d8
* Change std::list into a std::vector for IntervalSets. This reducesAlkis Evlogimenos2004-07-211-4/+5
| | | | | | | compile time for 176.gcc from 5.6 secs to 4.7 secs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15072 91177308-0d34-0410-b5e6-96231b3b80d8
* Improve file comment.Alkis Evlogimenos2004-07-211-1/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15069 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Iterative scan register allocator.Alkis Evlogimenos2004-07-212-4/+479
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15068 91177308-0d34-0410-b5e6-96231b3b80d8
* Linearscan is no longer experimental.Alkis Evlogimenos2004-07-211-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15067 91177308-0d34-0410-b5e6-96231b3b80d8
* Add function to clear all virtual->physical mappings but not assignedAlkis Evlogimenos2004-07-201-0/+5
| | | | | | | stack slots. This is in preparation for the iterative linear scan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15032 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove unneeded functor. LiveInterval has a < operator.Alkis Evlogimenos2004-07-201-11/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15031 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove dead code.Alkis Evlogimenos2004-07-191-17/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15011 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a bug that occurs when the last instruction in a range is deadChris Lattner2004-07-191-3/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15005 91177308-0d34-0410-b5e6-96231b3b80d8
* When joining intervals, join intervals in deeply nested loops first. ThisChris Lattner2004-07-191-4/+34
| | | | | | | | is a simple change, but seems to improve code a little. For example, on 256.bzip2, we went from 75.0s -> 73.33s (2% speedup). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15004 91177308-0d34-0410-b5e6-96231b3b80d8
* Split joinIntervals into two methodsChris Lattner2004-07-192-84/+89
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15003 91177308-0d34-0410-b5e6-96231b3b80d8
* There is no need to store the MBB along with the MI any more, we can nowChris Lattner2004-07-193-16/+16
| | | | | | | ask instructions for their parent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14998 91177308-0d34-0410-b5e6-96231b3b80d8
* Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)Chris Lattner2004-07-194-9/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14997 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the DefBlock element of VarInfo. DefBlock is always DefInst->getParent()Chris Lattner2004-07-191-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14996 91177308-0d34-0410-b5e6-96231b3b80d8
* Two changes, both very significant:Chris Lattner2004-07-191-11/+2
| | | | | | | | | | | * vreg <-> vreg joining now works, enable it unconditionally when joining is enabled (which is the default). * Fix a serious pessimization of spill code where we were saying that a spilled DEF operand was live into the subsequent instruction. This allows for substantially better code when spilling starts to happen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14993 91177308-0d34-0410-b5e6-96231b3b80d8
* See comments. The live intervals were not coming out of the spiller in sortedChris Lattner2004-07-191-1/+20
| | | | | | | | | | order, causing the inactive list in the linearscan list to get unsorted, which basically fuxored everything up severely. These seems to fix the joiner, so with more testing I will enable it by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14992 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix assertion to not dereference end!Chris Lattner2004-07-191-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14991 91177308-0d34-0410-b5e6-96231b3b80d8
* Add some asserts that the list of intervals returned by addIntervalsForSpillsChris Lattner2004-07-191-6/+30
| | | | | | | | is sorted. This is not the case currently, which is causing no end of problems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14990 91177308-0d34-0410-b5e6-96231b3b80d8
* remove the mbbi2mbbMap_, which was just keeping track of mbb order anyway.Chris Lattner2004-07-191-54/+73
| | | | | | | | | | | Heavily refactor handleVirtualRegisterDef, adding comments and making it more efficient. It is also much easier to follow and convince ones self that it is correct :) Add -debug output to the joine, showing the result of joining the intervals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14989 91177308-0d34-0410-b5e6-96231b3b80d8
* fill comment to 80 colsChris Lattner2004-07-191-11/+7
| | | | | | | remove map that is not needed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14988 91177308-0d34-0410-b5e6-96231b3b80d8
* It looks like physref->virtreg joining is working fine. Enable it by defaultChris Lattner2004-07-171-10/+19
| | | | | | | but make virtreg->virtreg joining stay off by default git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14916 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix IA64 compatibilityChris Lattner2004-07-162-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14866 91177308-0d34-0410-b5e6-96231b3b80d8
* Use new macroChris Lattner2004-07-161-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14865 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix for PR341Chris Lattner2004-07-151-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14845 91177308-0d34-0410-b5e6-96231b3b80d8
* Add checks to ensure that there are no unreachable blocks in the functionChris Lattner2004-07-091-0/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14725 91177308-0d34-0410-b5e6-96231b3b80d8
* * Doxygenify commentsMisha Brukman2004-07-091-104/+96
| | | | | | | | | | | | * Fix spacing, grammar in comment * Make code layout consistent * Wrap code at 80 cols * Delete spurious blank lines No functional changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14721 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix typo.Alkis Evlogimenos2004-07-091-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14720 91177308-0d34-0410-b5e6-96231b3b80d8
* Improve code comments.Alkis Evlogimenos2004-07-091-5/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14719 91177308-0d34-0410-b5e6-96231b3b80d8
* Add viewCFG() and viewCFGOnly() APIs.Alkis Evlogimenos2004-07-081-1/+77
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14679 91177308-0d34-0410-b5e6-96231b3b80d8
* Disable coalescing.Alkis Evlogimenos2004-07-071-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14655 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not crash when joining two intervals of registers of differentAlkis Evlogimenos2004-07-061-1/+10
| | | | | | | | classes: just ignore that move. Thanks to Vladimir Prus who found the bug! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14644 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a bug in the unreachable block elim pass. Dropping all references on aChris Lattner2004-07-061-4/+11
| | | | | | | | | basic block clear()'s all of the operands lists, including phis. This caused removePredecessor to get confused later. Because of this, we just nuke (without prejudice) PHI nodes in unreachable blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14635 91177308-0d34-0410-b5e6-96231b3b80d8
* Correctly compute the ration of iterations/#intervals.Alkis Evlogimenos2004-07-041-2/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14626 91177308-0d34-0410-b5e6-96231b3b80d8
* Add #include <iostream> since Value.h does not #include it any more.Reid Spencer2004-07-0411-0/+16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14622 91177308-0d34-0410-b5e6-96231b3b80d8
* Add efficiency statistic.Alkis Evlogimenos2004-07-041-1/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14590 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert patches 1.79 and 1.80 which had to do with dead MBB's. Now that theyChris Lattner2004-07-021-6/+4
| | | | | | | don't exist, we don't have to pretend to handle them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14567 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a trivially simple pass to delete unreachable blocks from the CFG. ThisChris Lattner2004-07-021-0/+68
| | | | | | | | | | | | | | pass is required to paper over problems in the code generator (primarily live variables and its clients) which doesn't really have any well defined semantics for unreachable code. The proper solution to this problem is to have instruction selectors not select blocks that are unreachable. Until we have a instruction selection framework available for use, however, we can't expect all instruction selector writers to do this. Until then, this pass should be used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14563 91177308-0d34-0410-b5e6-96231b3b80d8
* Make sure that we destroy the MBB's, with all of their instructions, beforeChris Lattner2004-07-011-0/+1
| | | | | | | any other data structures git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14524 91177308-0d34-0410-b5e6-96231b3b80d8
* Now that MachineFunction/MachineBasicBlock keep a mapping of blocks to ID #'sChris Lattner2004-07-012-21/+1
| | | | | | | use them instead of a local LiveVariables numbering git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14523 91177308-0d34-0410-b5e6-96231b3b80d8
* Change MBB autonumber a bit to get the reverse mapping as well as a forwardChris Lattner2004-07-011-10/+6
| | | | | | | mapping git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14521 91177308-0d34-0410-b5e6-96231b3b80d8
* Instance var no longer existsChris Lattner2004-07-011-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14520 91177308-0d34-0410-b5e6-96231b3b80d8
* Start using MBB numbers directly instead of going through the live variablesChris Lattner2004-07-013-4/+4
| | | | | | | map. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14518 91177308-0d34-0410-b5e6-96231b3b80d8
* Instead of building a private numbering of MBB's use brg's nifty auto-numbering.Chris Lattner2004-07-011-5/+5
| | | | | | | Also convert df_iterator -> df_ext_iterator for subsequent stuff I'm doing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14517 91177308-0d34-0410-b5e6-96231b3b80d8
* In line with the previous patch, do not assert out if analyzing a dead basic ↵Chris Lattner2004-06-291-1/+4
| | | | | | block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14475 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not dereference end iterators. It hurts when you do that.Chris Lattner2004-06-291-3/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14474 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not find these ugly sparc-specific objects by using the annotation API onChris Lattner2004-06-271-21/+7
| | | | | | | | | instructions. Instead, keep a map of instructions -> MCFI objects in the already sparc-specific class MachineFunctionInfo. This will slow down the sparc backend a bit, but it does not penalize the rest of LLVM! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14438 91177308-0d34-0410-b5e6-96231b3b80d8
* Made a fix so that you can print out MachineInstrs that belong to a ↵Tanya Lattner2004-06-256-19/+32
| | | | | | MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14389 91177308-0d34-0410-b5e6-96231b3b80d8
* Convert tabs to spaces.Misha Brukman2004-06-241-45/+44
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14373 91177308-0d34-0410-b5e6-96231b3b80d8
* Making an archive version of the CodeGen library is unnecessary if we justMisha Brukman2004-06-221-1/+0
| | | | | | | move InstructionLowering itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14324 91177308-0d34-0410-b5e6-96231b3b80d8