- Jun 30, 2005
-
-
Chris Lattner authored
The optimization for locally used allocas was not safe for allocas that were read before they were written. This change disables that optimization in that case. llvm-svn: 22318
-
- Apr 22, 2005
-
-
Misha Brukman authored
llvm-svn: 21427
-
- Nov 30, 2004
-
-
Chris Lattner authored
This only fails on darwin or on X86 under valgrind. llvm-svn: 18377
-
- Oct 18, 2004
-
-
Reid Spencer authored
Patch contributed by Morten Ofstad. Thanks Morten! llvm-svn: 17123
-
Chris Lattner authored
particular, invoke ret values are only live in the normal dest of the invoke not in the unwind dest. llvm-svn: 17108
-
- Oct 17, 2004
-
-
Chris Lattner authored
unneccesary. This allows us to delete several hundred phi nodes of the form PHI(x,x,x,undef) from 253.perlbmk and probably other programs as well. This implements Mem2Reg/UndefValuesMerge.ll llvm-svn: 17098
-
- Oct 16, 2004
-
-
Chris Lattner authored
llvm-svn: 17045
-
- Sep 19, 2004
-
-
Chris Lattner authored
whose addresses where used by trivial phi nodes and select instructions. This is now performed by the instcombine pass, which is more powerful, is much simpler, and is faster. This allows the deletion of a bunch of code, two FIXME's and two gotos. llvm-svn: 16406
-
- Sep 18, 2004
-
-
Chris Lattner authored
llvm-svn: 16389
-
- Sep 15, 2004
-
-
Chris Lattner authored
llvm-svn: 16347
-
- Sep 03, 2004
-
-
Alkis Evlogimenos authored
Patch contributed by Paolo Invernizzi! llvm-svn: 16152
-
- Sep 02, 2004
-
-
Reid Spencer authored
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
-
- Jul 29, 2004
-
-
Misha Brukman authored
llvm-svn: 15334
-
- Jun 19, 2004
-
-
Chris Lattner authored
llvm-svn: 14247
-
Chris Lattner authored
non-deterministic things like the ordering of blocks in the dominance frontier of a BB. Unfortunately, I don't know of a better way to solve this problem than to explicitly sort the BB's in function-order before processing them. This is guaranteed to slow the pass down a bit, but is absolutely necessary to get usable diffs between two different tools executing the mem2reg or scalarrepl pass. Before this, bazillions of spurious diff failures occurred all over the place due to the different order of processing PHIs: - %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.0, uint 0, uint 0 + %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.1, uint 0, uint 0 Now, the diffs match. llvm-svn: 14244
-
- Apr 08, 2004
-
-
Chris Lattner authored
llvm-svn: 12779
-
- Feb 03, 2004
-
-
Chris Lattner authored
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
-
Chris Lattner authored
SRoA/mem2reg from 41.2s to 27.5s on the testcase in PR209. llvm-svn: 11099
-
- Jan 12, 2004
-
-
Chris Lattner authored
case that the C/C++ front-end generates. llvm-svn: 10761
-
- Jan 09, 2004
-
-
Chris Lattner authored
llvm-svn: 10727
-
- Nov 11, 2003
-
-
Brian Gaeke authored
llvm-svn: 9903
-
- Oct 20, 2003
-
-
John Criswell authored
Header files will be on the way. llvm-svn: 9298
-
- Oct 18, 2003
-
-
Chris Lattner authored
llvm-svn: 9227
-
- Oct 06, 2003
-
-
Chris Lattner authored
"minimal" SSA form (in other words, it doesn't insert dead PHIs). This speeds up the mem2reg pass very significantly because it doesn't have to do a lot of frivolous work in many common cases. In the 252.eon function I have been playing with, this doesn't even insert the 120 PHI nodes that it used to which were trivially dead (in the process of promoting 356 alloca instructions overall). This speeds up the mem2reg pass from 1.2459s to 0.1284s. More significantly, the DCE pass used to take 2.4138s to remove the 120 dead PHI nodes that mem2reg constructed, now it takes 0.0134s (which is the time to scan the function and decide that there is nothing dead). So overall, on this one function, we speed things up a total of 3.5179s, which is a 24.8x speedup! :) This change is tested by the Mem2Reg/2003-10-05-DeadPHIInsertion.ll test, which now passes. llvm-svn: 8884
-
- Oct 05, 2003
-
-
Chris Lattner authored
llvm-svn: 8883
-
Chris Lattner authored
basic block. This is amazingly common in code generated by the C/C++ front-ends. This change makes it not have to insert ANY phi nodes, whereas before it would insert a ton of dead ones which DCE would have to clean up. Thus, this fix improves compile-time performance of these trivial allocas in two ways: 1. It doesn't have to do the walking and book-keeping for renaming 2. It does not insert dead phi nodes for them which would have to subsequently be cleaned up. On my favorite testcase from 252.eon, this special case handles 305 out of 356 promoted allocas in the function. It speeds up the mem2reg pass from 7.5256s to 1.2505s. It inserts 677 fewer dead PHI nodes, which speeds up a subsequent -dce pass from 18.7524s to 2.4806s. There are still 120 trivially dead PHI nodes being inserted for variables used in multiple basic blocks, but they are not handled by this patch. llvm-svn: 8881
-
Chris Lattner authored
llvm-svn: 8865
-
Chris Lattner authored
The VersionNumbers vector is only used during PHI placement. Turn it into an argument, allowing us to get rid of the vector. llvm-svn: 8864
-
Chris Lattner authored
*** Revamp the code which handled unreachable code in the function. Now the code is much more efficient for high-degree basic blocks, such as those that occur in the 252.eon SPEC benchmark. For the interested, the time to promote a SINGLE alloca in _ZN7mrScene4ReadERSi function used to be > 3.5s. Now it is < .075s. The function has a LOT of allocas in it, so it appeared to be infinite looping, this should make it much nicer. :) llvm-svn: 8863
-
Chris Lattner authored
llvm-svn: 8862
-
Chris Lattner authored
work-list of value definitions. This allows elimination of the explicit 'iterative' step of the algorithm, and also reuses temporary memory better. llvm-svn: 8861
-
Chris Lattner authored
need to be an instance variable! llvm-svn: 8860
-
Chris Lattner authored
* Fuse two parallel loops * Use a more specific type for AllocaLookup llvm-svn: 8859
-
Chris Lattner authored
* Do not insert a new entry into NewPhiNodes during the rename pass if there are no PHIs in a block. * Do not compute WriteSets in parallel llvm-svn: 8858
-
Chris Lattner authored
* Eliminate the KillList instance variable, instead, just delete loads and stores as they are "renamed", and delete allocas when they are done * Make the 'visited' set an instance variable to avoid passing it on the stack. llvm-svn: 8857
-
- Aug 18, 2003
-
-
Misha Brukman authored
llvm-svn: 7944
-
- Apr 25, 2003
-
-
Chris Lattner authored
llvm-svn: 5919
-
- Apr 24, 2003
-
-
Chris Lattner authored
llvm-svn: 5895
-
- Apr 21, 2003
-
-
Chris Lattner authored
llvm-svn: 5824
-
- Apr 18, 2003
-
-
Chris Lattner authored
llvm-svn: 5810
-