summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PHIElimination.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Detemplatize the Statistic class. The only type it is instantiated withChris Lattner2006-12-061-2/+2
| | | | | | is 'unsigned'. llvm-svn: 32279
* "Once more into the breach, dear friends, once more, or fill the wall upBill Wendling2006-09-281-26/+42
| | | | | | | | | | with our English dead." No! Really! Serious this time...It was how the vreg uses were being adjusted that was causing hte Olden tests to fail. I corrected this and the Olden and Regression tests all passed. llvm-svn: 30644
* re-re-revert this, back to the right revision. It currently breaks bisort/mstChris Lattner2006-09-281-44/+24
| | | | | | in olden among others. llvm-svn: 30637
* re-revert this patch, bisort and mst are still broken in Olden.Chris Lattner2006-09-281-3/+3
| | | | llvm-svn: 30634
* Reapplying this patch. With the newest commits, the error in Olden/bisortBill Wendling2006-09-271-24/+44
| | | | | | has disappeared. llvm-svn: 30633
* Temporarily revert this. This breaks Olden/bisort on PPCChris Lattner2006-09-271-44/+24
| | | | llvm-svn: 30628
* PR878: Instead of calculating the vreg to PHI use count everytime we getBill Wendling2006-09-271-24/+44
| | | | | | | | a function, do it up front in linear time (going through all of the instructions once). We create a map out of them. Then it's no problem to use the information in it during elimination... llvm-svn: 30624
* s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29911
* Fix an obvious bug, noticed by inspection. No current targets trigger this.Chris Lattner2006-08-121-3/+3
| | | | llvm-svn: 29648
* Reduce number of exported symbolsAndrew Lenharth2006-07-201-2/+2
| | | | llvm-svn: 29220
* Use hidden visibility to make symbols in an anonymous namespace getChris Lattner2006-06-281-1/+2
| | | | | | dropped. This shrinks libllvmgcc.dylib another 67K llvm-svn: 28975
* Add support for targets (like Alpha) that have terminator instructions whichChris Lattner2006-01-041-5/+41
| | | | | | | | | use virtual registers. We now allow the first instruction in a block of terminators to use virtual registers, and update phi elimination to correctly update livevar when eliminating phi's. This fixes a problem on a testcase Andrew sent me. llvm-svn: 25083
* Add an assertion, update DefInst even though no one uses it (dangling pointersChris Lattner2006-01-041-0/+4
| | | | | | don't help anyone) llvm-svn: 25081
* clean up this code a bit, no functionality changeChris Lattner2005-10-031-101/+116
| | | | llvm-svn: 23609
* Break the body of the loop out into a new methodChris Lattner2005-10-031-144/+155
| | | | llvm-svn: 23606
* adjust to new live variables interfaceChris Lattner2005-08-231-11/+6
| | | | llvm-svn: 22992
* * Order #includes alphabeticallyMisha Brukman2005-05-051-4/+1
| | | | | | * Remove commented-out debug printouts llvm-svn: 21707
* Convert tabs to spacesMisha Brukman2005-04-221-2/+2
| | | | llvm-svn: 21439
* Remove trailing whitespaceMisha Brukman2005-04-211-14/+14
| | | | llvm-svn: 21420
* Changes For Bug 352Reid Spencer2004-09-011-2/+2
| | | | | | | | Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
* 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
OpenPOWER on IntegriCloud