summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Increase code clarity.Alkis Evlogimenos2004-02-061-127/+100
| | | | llvm-svn: 11151
* Eliminate uneeded lookups by passing a Virt2PhysMap::iterator insteadAlkis Evlogimenos2004-02-061-23/+33
| | | | | | of the virtual register to certain functions. llvm-svn: 11143
* Fix another dominator update bug. These bugs keep getting exposed because GCSEChris Lattner2004-02-051-1/+1
| | | | | | keeps finding more code motion opportunities now that the dominators are correct! llvm-svn: 11142
* Change live interval representation. Machine instructions now have twoAlkis Evlogimenos2004-02-051-22/+31
| | | | | | | | | | | | | | | | | | slots each. As a concequence they get numbered as 0, 2, 4 and so on. The first slot is used for operand uses and the second for defs. Here's an example: 0: A = ... 2: B = ... 4: C = A + B ;; last use of A The live intervals should look like: A = [1, 5) B = [3, x) C = [5, y) llvm-svn: 11141
* Fix bug updating dominatorsChris Lattner2004-02-051-2/+2
| | | | llvm-svn: 11140
* Add debug outputChris Lattner2004-02-051-0/+4
| | | | llvm-svn: 11139
* Fix PR223: Loopsimplify incorrectly updates dominator informationChris Lattner2004-02-051-33/+105
| | | | | | | | The problem is that the dominator update code didn't "realize" that it's possible for the newly inserted basic block to dominate anything. Because it IS possible, stuff was getting updated wrong. llvm-svn: 11137
* We don't need to scan the blocks that we are live-in on everyAlkis Evlogimenos2004-02-051-12/+13
| | | | | | access. Rather we only have to do it on the creation of the interval. llvm-svn: 11135
* In a "seeing the forest through the trees" kinda situation, I realized that aChris Lattner2004-02-051-227/+230
| | | | | | | | | | complete rewrite of load-vn will make it a bit faster. This changes speeds up the gcse pass (which uses load-vn) from 25.45s to 0.42s on the testcase in PR209. I've also verified that this gives the exact same results as the old one. llvm-svn: 11132
* This is a big diff with no functionality change. We just reorder some code,Chris Lattner2004-02-051-73/+60
| | | | | | | which causes big reindentation. While I'm at it, I fix the fixme by removing some dead code. llvm-svn: 11131
* finegrainify namespacificationChris Lattner2004-02-051-5/+2
| | | | llvm-svn: 11130
* Added missing include.Tanya Lattner2004-02-051-0/+1
| | | | llvm-svn: 11129
* Fixed Chris' typo.Tanya Lattner2004-02-051-1/+1
| | | | llvm-svn: 11128
* Implement optimizations for handling large basic blocks.Chris Lattner2004-02-051-29/+77
| | | | llvm-svn: 11126
* Modify the two address instruction pass to remove the duplicateAlkis Evlogimenos2004-02-047-170/+160
| | | | | | operand of the instruction and thus simplify the register allocation. llvm-svn: 11124
* Minor speedup, don't query ValueMap each time through the loopChris Lattner2004-02-041-6/+3
| | | | llvm-svn: 11123
* Take away the default iostream argument of createMachineFunctionPrinterPass(),Brian Gaeke2004-02-041-6/+6
| | | | | | at Chris's request. llvm-svn: 11120
* Two changes:Chris Lattner2004-02-041-5/+12
| | | | | | | | | | | | | 1. Don't scan to the end of alloca instructions in the caller function to insert inlined allocas, just insert at the top. This saves a lot of time inlining into functions with a lot of allocas. 2. Use splice to move the alloca instructions over, instead of remove/insert. This allows us to transfer a block at a time, and eliminates a bunch of silly symbol table manipulations. This speeds up the inliner on the testcase in PR209 from 1.73s -> 1.04s (67%) llvm-svn: 11118
* IMULri* instructions do not require their first two registers operandsAlkis Evlogimenos2004-02-042-7/+9
| | | | | | to be the same (IOW they are not two address instructions). llvm-svn: 11117
* Optimize the case where we are inlining a function that contains only one ↵Chris Lattner2004-02-041-37/+67
| | | | | | | | | | | basic block, and that basic block ends with a return instruction. In this case, we can just splice the cloned "body" of the function directly into the source basic block, avoiding a lot of rearrangement and splitBasicBlock's linear scan over the split block. This speeds up the inliner on the testcase in PR209 from 2.3s to 1.7s, a 35% reduction. llvm-svn: 11116
* Adjust to the new BasicBlock ctor, which requires a function parameterChris Lattner2004-02-042-2/+2
| | | | llvm-svn: 11114
* Adjust to the new BB ctorChris Lattner2004-02-041-24/+8
| | | | llvm-svn: 11113
* Remove unneeded code now that splitBasicBlock does the "right thing"Chris Lattner2004-02-041-5/+0
| | | | llvm-svn: 11111
* When splitting a basic block, insert the new half immediately after the firstChris Lattner2004-02-041-1/+1
| | | | | | half. llvm-svn: 11110
* More refactoring. Move alloca instructions and handle invoke instructionsChris Lattner2004-02-041-129/+132
| | | | | | | before we delete the original call site, allowing slight simplifications of code, but nothing exciting. llvm-svn: 11109
* Move the cloning of the function body much earlier in the inlinefunctionChris Lattner2004-02-041-52/+54
| | | | | | | | | | process. The only optimization we did so far is to avoid creating a PHI node, then immediately destroying it in the common case where the callee has one return statement. Instead, we just don't create the return value. This has no noticable performance impact, but paves the way for future improvements. llvm-svn: 11108
* Give CloneBasicBlock an optional function argument to specify which functionChris Lattner2004-02-042-13/+10
| | | | | | | | to add the cloned block to. This allows the block to be added to the function immediately, and all of the instructions to be immediately added to the function symbol table, which speeds up the inliner from 3.7 -> 3.38s on the PR209. llvm-svn: 11107
* If changing a parent, don't add then remove the object from the leak detectorChris Lattner2004-02-041-5/+5
| | | | llvm-svn: 11106
* In BasicBlock::splitBasicBlock, just use islist::splice to move the ↵Chris Lattner2004-02-031-8/+3
| | | | | | | | | | | instructions, instead of a loop that is really inefficient with large basic blocks. This speeds up the inliner pass on the testcase in PR209 from 13.8s to 2.24s which still isn't exactly speedy, but is a lot better. :) llvm-svn: 11105
* Bunch up all locally used allocas by the block they are allocated in, andChris Lattner2004-02-031-13/+74
| | | | | | | process them all as a group. This speeds up SRoA/mem2reg from 28.46s to 0.62s on the testcase from PR209. llvm-svn: 11100
* Handle extremely trivial cases extremely efficiently. This speeds upChris Lattner2004-02-031-17/+30
| | | | | | SRoA/mem2reg from 41.2s to 27.5s on the testcase in PR209. llvm-svn: 11099
* Generate ftst instructions for comparison against zeroChris Lattner2004-02-031-0/+9
| | | | llvm-svn: 11098
* Add the ftst instructionChris Lattner2004-02-031-1/+3
| | | | llvm-svn: 11095
* Add support for one argument OneArgFP instructionsChris Lattner2004-02-031-3/+4
| | | | llvm-svn: 11094
* When an instruction like: A += B had both A and B virtual registersAlkis Evlogimenos2004-02-032-10/+24
| | | | | | spilled, A was loaded from its stack location twice. This fixes the bug. llvm-svn: 11093
* Revert changes. Will implement this using a different set of primitivesAlkis Evlogimenos2004-02-021-9/+3
| | | | llvm-svn: 11091
* Fix debugging output.Alkis Evlogimenos2004-02-021-1/+1
| | | | llvm-svn: 11088
* Correctly update def/use information for modified machine operands.Alkis Evlogimenos2004-02-021-3/+9
| | | | llvm-svn: 11087
* Should be more careful. The previously applied change made all countsAlkis Evlogimenos2004-02-021-10/+6
| | | | | | outside of loops = 0. llvm-svn: 11085
* Floating point negates are -0.0 - X, not 0.0 - XChris Lattner2004-02-021-5/+13
| | | | llvm-svn: 11084
* Disable (x - (y - z)) => (x + (z - y)) optimization for floating point.Chris Lattner2004-02-021-1/+2
| | | | llvm-svn: 11083
* Update commentChris Lattner2004-02-021-1/+1
| | | | llvm-svn: 11082
* No need to declare implicit uses/defs of ST0Chris Lattner2004-02-021-1/+1
| | | | llvm-svn: 11081
* Make deadarghaX0r warning louder.Brian Gaeke2004-02-021-1/+1
| | | | | | (I just love typing haX0r. haX0r haX0r haX0r.) llvm-svn: 11079
* Generate the fchs instruction to negate a floating point numberChris Lattner2004-02-022-1/+15
| | | | llvm-svn: 11078
* Add support for OneArgFPRW instructions, fix a couple of typeosChris Lattner2004-02-021-12/+43
| | | | llvm-svn: 11077
* Include PowerPC.h. Flesh out the stub versions of addPassesToEmitAssembly()Brian Gaeke2004-02-021-3/+13
| | | | | | and addPassesToJITCompile() slightly. llvm-svn: 11076
* Add comments describing how you would add prototypes for factory methods forBrian Gaeke2004-02-021-0/+15
| | | | | | PowerPC-specific passes here. llvm-svn: 11073
* Codegen -0.0 correctly. Do not use fldz! This is another -0.0 == +0.0 ↵Chris Lattner2004-02-021-4/+4
| | | | | | problem, arg. llvm-svn: 11070
* Create an object for tracking physical register usage. This will lookAlkis Evlogimenos2004-02-021-106/+116
| | | | | | much better when I get rid of the reserved registers. llvm-svn: 11066
OpenPOWER on IntegriCloud