summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Implement the hashing scheme in an attempt to speed up the "slow" case inChris Lattner2004-02-091-50/+68
| | | | | | | | type resolution. Unfortunately it doesn't help. Also delete some dead debugging code. llvm-svn: 11237
* This debugging hook is no longer needed.Chris Lattner2004-02-091-2/+0
| | | | llvm-svn: 11233
* Code cleanup in preparation for later changes. Now that ContainedTy's areChris Lattner2004-02-091-107/+75
| | | | | | | consistent across the various type classes, we can factor out a LOT more almost-identical code. Also, add a couple of temporary statistics. llvm-svn: 11232
* Now that all of the derived types have disciplined interfaces, we can eliminateChris Lattner2004-02-091-66/+41
| | | | | | | all of the ad-hoc storage of contained types. This allows getContainedType to not be virtual, and allows us to entirely delete the TypeIterator class. llvm-svn: 11230
* Don't depend on auto data conversionChris Lattner2004-02-091-1/+1
| | | | llvm-svn: 11229
* Adjust to the changed StructType interface. In particular, ↵Chris Lattner2004-02-0914-66/+56
| | | | | | getElementTypes() is gone. llvm-svn: 11228
* Start using the new and improve interface to FunctionType argumentsChris Lattner2004-02-0912-104/+87
| | | | llvm-svn: 11224
* This #include is not needed, it should have been removed with the last patchChris Lattner2004-02-091-1/+0
| | | | llvm-svn: 11222
* Instead of searching the entire type graph for a type to determine if itChris Lattner2004-02-091-8/+29
| | | | | | | | | | | contains the type we are looking for, just search the immediately used types. We can only do this because we keep the "current" type in the nesting level as we decrement upreferences. This change speeds up the testcase in PR224 from 50.4s to 22.08s, not too shabby. llvm-svn: 11221
* Upreferences are always OpaqueTypes, meaning that it is impossible for a ↵Chris Lattner2004-02-091-0/+1
| | | | | | | | | non-abstract type from containing one. This speeds up the asmparser on the testcase in PR224 from 61->50s. llvm-svn: 11220
* Another nice speedup for the register allocator. This time, we replaceChris Lattner2004-02-091-37/+55
| | | | | | | | the Virt2PhysRegMap std::map with an std::vector. This speeds up the register allocator another (almost) 40%, from .72->.45s in a release build of LLC on 253.perlbmk. llvm-svn: 11219
* Add a new (hidden) option that is useful for profiling.Chris Lattner2004-02-091-1/+5
| | | | llvm-svn: 11218
* 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
* Change the PhysRegsUsed map into a dense array. Seeing that this is a mappingChris Lattner2004-02-091-34/+35
| | | | | | | | | | | | | from physical registers, and they are always dense, it makes sense to not have a ton of RBtree overhead. This change speeds up regalloclocal about ~30% on 253.perlbmk, from .35s -> .27s in the JIT (in LLC, it goes from .74 -> .55). Now live variable analysis is the slowest codegen pass. Of course it doesn't help that we have to run it twice, because regalloclocal doesn't update it, but even if it did it would be the slowest pass (now it's just the 2x slowest pass :( llvm-svn: 11215
* Two problems with these lines of code:Chris Lattner2004-02-091-2/+0
| | | | | | | | | | | 1. The "work" was not in the assert, so it was punishing the optimized release 2. getNamedFunction is _very_ expensive in large programs. It is not designed to be used like this, and was taking 7% of the execution time of the code generator on perlbmk. Since the assert "can never fail", I'm just killing it. llvm-svn: 11214
* The ConstantExpr::getCast call can cause a CPR to be generated. If so,Chris Lattner2004-02-091-0/+4
| | | | | | strip it off. llvm-svn: 11213
* Fix PR215: [bcwriter] Problem compactifying ConstantPointerRefsChris Lattner2004-02-091-0/+2
| | | | | | Have I ever mentioned how much I _hate_ constantpointerrefs? llvm-svn: 11212
* Fix grammar-o.Misha Brukman2004-02-081-1/+1
| | | | llvm-svn: 11210
* Improve compatibility with programs that already have a prototype for 'write',Chris Lattner2004-02-081-12/+43
| | | | | | even if it is wierd in some way. llvm-svn: 11207
* vi failed me again. :)Chris Lattner2004-02-081-1/+1
| | | | llvm-svn: 11206
* Rename the invoke 'except' destination to the 'unwind' destinationChris Lattner2004-02-081-1/+1
| | | | llvm-svn: 11205
* Change the 'exception' destination to the 'unwind' destination. We will alwaysChris Lattner2004-02-082-3/+3
| | | | | | allow 'except' instead of 'unwind' here though. llvm-svn: 11203
* rename the "exceptional" destination of an invoke instruction to the ↵Chris Lattner2004-02-0810-14/+13
| | | | | | 'unwind' dest llvm-svn: 11202
* Fix PR225: [pruneeh] -pruneeh pass removes invoke instructions it shouldn'tChris Lattner2004-02-081-10/+32
| | | | llvm-svn: 11200
* splitBasicBlock "does the right thing" now, no reason to reposition it.Chris Lattner2004-02-081-3/+0
| | | | llvm-svn: 11199
* Implement proper invoke/unwind lowering.Chris Lattner2004-02-081-21/+262
| | | | | | This fixed PR16 "[lowerinvoke] The -lowerinvoke pass does not insert calls to setjmp/longjmp" llvm-svn: 11195
* Print out all globals as they are emitted, not just those emitted fromChris Lattner2004-02-081-3/+2
| | | | | | emitGlobals llvm-svn: 11191
* There is no reason to #define fdChris Lattner2004-02-081-3/+2
| | | | llvm-svn: 11190
* Add a call to 'write' right before the call to abort() in the unwind path.Chris Lattner2004-02-081-3/+27
| | | | | | | This causes the JIT, or LLC'd program to print out a nice message, explaining WHY the program aborted. llvm-svn: 11184
* Add one that I missedChris Lattner2004-02-081-0/+1
| | | | llvm-svn: 11179
* Instead of callign removeTriviallyDeadNodes on the global graph every timeChris Lattner2004-02-084-8/+13
| | | | | | | | | removeDeadNodes is called, only call it at the end of the pass being run. This saves 1.3 seconds running DSA on 177.mesa (5.3->4.0s), which is pretty big. This is only possible because of the automatic garbage collection done on forwarding nodes. llvm-svn: 11178
* Remove another unneeded call.Chris Lattner2004-02-081-1/+0
| | | | llvm-svn: 11177
* This call is no longer needed now that merging does not produce garbageChris Lattner2004-02-081-1/+0
| | | | llvm-svn: 11176
* Substantially improve the DSA code by removing 'forwarding' nodes fromChris Lattner2004-02-081-1/+5
| | | | | | | | | DSGraphs while they are forwarding. When the last reference to the forwarding node is dropped, the forwarding node is autodeleted. This should simplify removeTriviallyDead nodes, and is only (efficiently) possible because we are using an ilist of dsnodes now. llvm-svn: 11175
* Bugfix for ilist conversion. The ilist wants to make an 'end' node which hasChris Lattner2004-02-081-1/+1
| | | | | | G == 0 llvm-svn: 11174
* Switch the Nodes list from being an std::vector<DSNode*> to an ilist<DSNode>Chris Lattner2004-02-081-19/+17
| | | | llvm-svn: 11173
* Change to use node_iterators instead of direct access to NodesChris Lattner2004-02-081-34/+43
| | | | llvm-svn: 11171
* getNodes() is gone, use node_begin/end insteadChris Lattner2004-02-073-15/+18
| | | | | | | Rename stats from dsnode -> dsa Add a new stat llvm-svn: 11167
* getNodes() is goneChris Lattner2004-02-071-21/+21
| | | | llvm-svn: 11166
* There is no need to clone over nodes that are going to be dead anywayChris Lattner2004-02-071-3/+5
| | | | llvm-svn: 11157
* 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
OpenPOWER on IntegriCloud