summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PHIElimination.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Update live intervals more accurately for PHI elim. This slightly reducesChris Lattner2004-07-231-10/+6
| | | | | | the live intervals for some registers. llvm-svn: 15125
* costmetic changesChris Lattner2004-07-221-14/+14
| | | | llvm-svn: 15118
* There is no need to store the MBB along with the MI any more, we can nowChris Lattner2004-07-191-1/+1
| | | | | | ask instructions for their parent. llvm-svn: 14998
* Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)Chris Lattner2004-07-191-4/+4
| | | | llvm-svn: 14997
* Start using MBB numbers directly instead of going through the live variablesChris Lattner2004-07-011-1/+1
| | | | | | map. llvm-svn: 14518
* Adjust to new TargetMachine interfaceChris Lattner2004-06-021-1/+1
| | | | llvm-svn: 13956
* Fix a really nasty bug from my changes on Monday to PHIElim. These changesChris Lattner2004-05-121-11/+19
| | | | | | | | broke obsequi and a lot of other things. It all boiled down to MBB being overloaded in an inner scope and me confusing it with the one in the outer scope. Ugh! llvm-svn: 13517
* Switch this from using an std::map to using a DenseMap. This speeds upChris Lattner2004-05-101-6/+5
| | | | | | phi-elimination from 0.6 to 0.54s on kc++. llvm-svn: 13454
* Use a new VRegPHIUseCount to compute uses of PHI values by other phi valuesChris Lattner2004-05-101-14/+21
| | | | | | | in the basic block being processed. This fixes PhiElimination on kimwitu++ from taking 105s to taking a much more reasonable 0.6s (in a debug build). llvm-svn: 13453
* Now that we use an ilist of machine instructions, iterators are more robustChris Lattner2004-05-101-5/+8
| | | | | | | | | than before. Because this is the case, we can compute the first non-phi instruction once when de-phi'ing a block. This shaves ~4s off of phielimination of _Z7yyparsev in kimwitu++ from 109s -> 105s. There are still much more important gains to come. llvm-svn: 13452
* Operate on the Machine CFG instead of on the LLVM CFGChris Lattner2004-05-011-8/+4
| | | | llvm-svn: 13302
* MachineBasicBlock::remove should not modify the iterator passed inChris Lattner2004-03-311-2/+1
| | | | llvm-svn: 12571
* Finegrainify namespacificationChris Lattner2004-02-231-5/+3
| | | | llvm-svn: 11757
* Refactor rewinding code for finding the first terminator of a basicAlkis Evlogimenos2004-02-231-16/+1
| | | | | | | | | | | | block into MachineBasicBlock::getFirstTerminator(). This also fixes a bug in the implementation of the above in both RegAllocLocal and InstrSched, where instructions where added after the terminator if the basic block's only instruction was a terminator (it shouldn't matter for RegAllocLocal since this case never occurs in practice). llvm-svn: 11748
* Use newly added next() and prior() utility functions.Alkis Evlogimenos2004-02-141-4/+3
| | | | llvm-svn: 11430
* Remove getAllocatedRegNum(). Use getReg() instead.Alkis Evlogimenos2004-02-131-1/+1
| | | | llvm-svn: 11393
* Change MachineBasicBlock's vector of MachineInstr pointers into anAlkis Evlogimenos2004-02-121-16/+19
| | | | | | | | | ilist of MachineInstr objects. This allows constant time removal and insertion of MachineInstr instances from anywhere in each MachineBasicBlock. It also allows for constant time splicing of MachineInstrs into or out of MachineBasicBlocks. llvm-svn: 11340
* Do not use MachineOperand::isVirtualRegister either!Chris Lattner2004-02-101-3/+3
| | | | llvm-svn: 11283
* Change interface of MachineOperand as follows:Alkis Evlogimenos2003-12-141-1/+1
| | | | | | | | | | | | | | | a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse() b) add isUse(), isDef() c) rename opHiBits32() to isHiBits32(), opLoBits32() to isLoBits32(), opHiBits64() to isHiBits64(), opLoBits64() to isLoBits64(). This results to much more readable code, for example compare "op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used very often in the code. llvm-svn: 10461
* Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke2003-11-111-0/+5
| | | | llvm-svn: 9903
* Added LLVM project notice to the top of every C++ source file.John Criswell2003-10-201-0/+7
| | | | | | Header files will be on the way. llvm-svn: 9298
* Const correctness fixesChris Lattner2003-07-261-2/+2
| | | | llvm-svn: 7349
* Fix bug: Jello/2003-06-04-bzip2-bug.llChris Lattner2003-06-051-23/+21
| | | | llvm-svn: 6624
* (1) Added special register class containing (for now) %fsr.Vikram S. Adve2003-05-271-1/+1
| | | | | | | | | | | | | Fixed spilling of %fcc[0-3] which are part of %fsr. (2) Moved some machine-independent reg-class code to class TargetRegInfo from SparcReg{Class,}Info. (3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly() and related functions and flags. Fixed several bugs where only "isDef" was being checked, not "isDefAndUse". llvm-svn: 6341
* Use a kill, not a dead definition, update commentChris Lattner2003-05-121-5/+4
| | | | llvm-svn: 6131
* * Keep LiveVariable information more up-to-date and consistentChris Lattner2003-05-121-7/+87
| | | | | | | | | * *** Finally mark values that are inputs to PHIs as killed when appropriate. This should make the generated code quite a bit better. For example, the local-ra will not have to spill PHI inputs at the end of predecessor BB's anymore. llvm-svn: 6117
* Fix bug where we could iterate off the end of a basic blockChris Lattner2003-05-121-2/+3
| | | | llvm-svn: 6116
* Fix N^2 algorithmChris Lattner2003-05-121-25/+34
| | | | llvm-svn: 6112
* * Fix several commentsChris Lattner2003-05-121-6/+37
| | | | | | * Update LiveVar info better, fixing bug: Jello/2003-05-11-PHIRegAllocBug.ll llvm-svn: 6110
* Fix problems with empty basic blocksChris Lattner2003-01-161-10/+14
| | | | llvm-svn: 5326
* Rename MachineInstrInfo -> TargetInstrInfoChris Lattner2003-01-141-1/+1
| | | | llvm-svn: 5272
* New filesChris Lattner2003-01-131-0/+133
llvm-svn: 5262
OpenPOWER on IntegriCloud