summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveVariables.cpp
Commit message (Collapse)AuthorAgeFilesLines
* There is no need to store the MBB along with the MI any more, we can nowChris Lattner2004-07-191-9/+9
| | | | | | ask instructions for their parent. llvm-svn: 14998
* Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)Chris Lattner2004-07-191-2/+3
| | | | llvm-svn: 14997
* Remove the DefBlock element of VarInfo. DefBlock is always DefInst->getParent()Chris Lattner2004-07-191-4/+4
| | | | llvm-svn: 14996
* Add checks to ensure that there are no unreachable blocks in the functionChris Lattner2004-07-091-0/+8
| | | | llvm-svn: 14725
* Now that MachineFunction/MachineBasicBlock keep a mapping of blocks to ID #'sChris Lattner2004-07-011-20/+0
| | | | | | use them instead of a local LiveVariables numbering llvm-svn: 14523
* Start using MBB numbers directly instead of going through the live variablesChris Lattner2004-07-011-2/+2
| | | | | | map. llvm-svn: 14518
* 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. llvm-svn: 14517
* Convert tabs to spaces.Misha Brukman2004-06-241-45/+44
| | | | llvm-svn: 14373
* Adjust to new TargetMachine interfaceChris Lattner2004-06-021-1/+1
| | | | llvm-svn: 13956
* Patch to fix PR337. Make sure to mark all aliased physical registers as usedChris Lattner2004-05-101-3/+8
| | | | | | | | | | | | | when we see a read of a register. This is important in cases like: AL = ... AH = ... = AX The read of AX must make both the AL and AH defs live until the use. llvm-svn: 13444
* Stop LiveVariables from using BasicBlocks as part of the mapping, insteadChris Lattner2004-05-011-29/+20
| | | | | | | | use MachineBasicBlocks. To do this, we traverse the Machine CFG instead of the LLVM CFG, which is also *MUCH* more efficient by having fewer levels of indirections and mappings. llvm-svn: 13301
* Correctly update LiveVariables when an instruction changesAlkis Evlogimenos2004-03-301-3/+3
| | | | llvm-svn: 12561
* Add an assertChris Lattner2004-02-291-1/+4
| | | | llvm-svn: 12010
* Uncomment assertions that register# != 0 on calls toAlkis Evlogimenos2004-02-261-3/+3
| | | | | | | MRegisterInfo::is{Physical,Virtual}Register. Apply appropriate fixes to relevant files. llvm-svn: 11882
* Fix an iterator invalidation problem. :(Chris Lattner2004-02-191-2/+11
| | | | llvm-svn: 11627
* Add method to update livevar when an instruction movesChris Lattner2004-02-191-0/+34
| | | | llvm-svn: 11625
* Make dense maps keyed on physical registers smallerusingAlkis Evlogimenos2004-02-151-4/+3
| | | | | | | | | | MRegisterInfo::getNumRegs() instead of MRegisterInfo::FirstVirtualRegister. Also use MRegisterInfo::is{Physical,Virtual}Register where appropriate. llvm-svn: 11477
* Change MachineBasicBlock's vector of MachineInstr pointers into anAlkis Evlogimenos2004-02-121-4/+3
| | | | | | | | | 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
* Add #includeChris Lattner2004-02-101-0/+1
| | | | llvm-svn: 11285
* Do not use MachineOperand::isVirtualRegister either!Chris Lattner2004-02-101-8/+6
| | | | llvm-svn: 11283
* Eliminate users of MachineOperand::isPhysicalRegisterChris Lattner2004-02-101-2/+4
| | | | llvm-svn: 11278
* Ugh, perform an optimization that GCC should be able to do itself. ThisChris Lattner2004-02-091-6/+7
| | | | | | speeds up livevar from .48/.32s -> .45/.31s in LLC on perlbmk llvm-svn: 11217
* Only do stuff for the REAL number of physical registers we have, not 1024.Chris Lattner2004-02-091-10/+8
| | | | | | | This speeds up live variables a lot, from .60/.39s -> .47/.26s in LLC, for the first/second pass respectively. llvm-svn: 11216
* Finegrainify namespacification, use new MRegisterInfo::isVirtualRegisterChris Lattner2004-01-311-1/+1
| | | | | | method llvm-svn: 11037
* Finegrainify namespacificationChris Lattner2004-01-301-4/+17
| | | | | | Implement LiveVariables::getIndexMachineBasicBlock llvm-svn: 11018
* Remove unneeded check (with the recent change in live variables a useAlkis Evlogimenos2004-01-131-4/+2
| | | | | | of a physical register is always dominated by a def). llvm-svn: 10821
* Correctly compute live variable information for physical registersAlkis Evlogimenos2004-01-131-19/+12
| | | | | | | | | | | | | | when an implicitely defined register is later used by an alias. For example: call foo %reg1024 = mov %AL The call implicitely defines EAX but only AL is used. Before this fix no information was available on AL. Now EAX and all its aliases except AL get defined and die at the call instruction whereas AL lives to be killed by the assignment. llvm-svn: 10813
* Change interface of MachineOperand as follows:Alkis Evlogimenos2003-12-141-2/+2
| | | | | | | | | | | | | | | 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
* Remove unecessary if statements when looping on ImplicitDefs.Alkis Evlogimenos2003-12-131-3/+3
| | | | llvm-svn: 10444
* Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke2003-11-111-0/+4
| | | | 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
* Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefsAlkis Evlogimenos2003-10-081-15/+19
| | | | | | | | | | | | | | | | | | | | | and TargetInstrDescriptor::ImplicitUses to always point to a null terminated array and never be null. So there is no need to check for pointer validity when iterating over those sets. Code that looked like: if (const unsigned* AS = TID.ImplicitDefs) { for (int i = 0; AS[i]; ++i) { // use AS[i] } } was changed to: for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) { // use *AS } llvm-svn: 8960
* (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
* * Keep the BBMap around as long as the pass is liveChris Lattner2003-05-121-8/+23
| | | | | | | * Change getVarInfo to take real virtual register numbers and offset them itself. This has caused me so much grief, it's not even funny. llvm-svn: 6115
* Add a vector to keep track of which registers are allocatable. Remove FIXMEsChris Lattner2003-05-071-14/+38
| | | | llvm-svn: 6015
* Re-add gross hack, it's still necessary. :(Chris Lattner2003-05-061-2/+12
| | | | llvm-svn: 6012
* Remove hideously nasty hackChris Lattner2003-05-061-12/+2
| | | | llvm-svn: 6011
* Minor cleanupChris Lattner2003-05-011-4/+6
| | | | llvm-svn: 5976
* Rename MachineInstrInfo -> TargetInstrInfoChris Lattner2003-01-141-1/+1
| | | | llvm-svn: 5272
* New filesChris Lattner2003-01-131-0/+257
llvm-svn: 5262
OpenPOWER on IntegriCloud