summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/JumpThreading.cpp
Commit message (Collapse)AuthorAgeFilesLines
* when folding duplicate conditions, delete the Chris Lattner2009-10-111-0/+2
| | | | | | now-probably-dead instruction tree feeding it. llvm-svn: 83778
* implement a transformation in jump threading that is currentlyChris Lattner2009-10-111-64/+218
| | | | | | | | | | done by condprop, but do it in a much more general form. The basic idea is that we can do a limited form of tail duplication in the case when we have a branch on a phi. Moving the branch up in to the predecessor block makes instruction selection much easier and encourages chained jump threadings. llvm-svn: 83759
* restructure some code, no functionality change.Chris Lattner2009-10-111-33/+29
| | | | llvm-svn: 83756
* factor some code better and move a function, no functionality change.Chris Lattner2009-10-111-81/+55
| | | | llvm-svn: 83755
* make jump threading on a phi with undef inputs happen.Chris Lattner2009-10-111-28/+54
| | | | llvm-svn: 83754
* Change jump threading to use the new SSAUpdater class instead of Chris Lattner2009-10-101-16/+43
| | | | | | | | | DemoteRegToStack. This makes it more efficient (because it isn't creating a ton of load/stores that are eventually removed by a later mem2reg), and more slightly more effective (because those load/stores don't get in the way of threading). llvm-svn: 83706
* Instruction::clone does not need to take an LLVMContext&. Remove that andNick Lewycky2009-09-271-1/+1
| | | | | | update all the callers. llvm-svn: 82889
* eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861Chris Lattner2009-09-021-2/+1
| | | | llvm-svn: 80766
* Push LLVMContexts through the IntegerType APIs.Owen Anderson2009-08-131-4/+7
| | | | llvm-svn: 78948
* Move getTrue() and getFalse() to 2.5-like APIs.Owen Anderson2009-07-311-2/+3
| | | | llvm-svn: 77685
* Move more code back to 2.5 APIs.Owen Anderson2009-07-301-2/+1
| | | | llvm-svn: 77635
* Move ConstantExpr to 2.5 API.Owen Anderson2009-07-291-1/+1
| | | | llvm-svn: 77494
* Remove Value::getName{Start,End}, the last of the old Name APIs.Daniel Dunbar2009-07-261-3/+3
| | | | llvm-svn: 77152
* Eliminate some uses of DOUT, cerr, and getNameStart().Daniel Dunbar2009-07-261-34/+35
| | | | llvm-svn: 77145
* Revert the ConstantInt constructors back to their 2.5 forms where possible, ↵Owen Anderson2009-07-241-3/+2
| | | | | | thanks to contexts-on-types. More to come. llvm-svn: 77011
* Convert several more passes to use getAnalysisIfAvailable<TargetData>()Dan Gohman2009-07-241-2/+1
| | | | | | instead of getAnalysis<TargetData>(). llvm-svn: 76982
* Get rid of the Pass+Context magic.Owen Anderson2009-07-221-9/+11
| | | | llvm-svn: 76702
* Rename getConstantInt{True|False} to get{True|False} at Chris' behest.Owen Anderson2009-07-211-2/+2
| | | | llvm-svn: 76598
* Revert yesterday's change by removing the LLVMContext parameter to ↵Owen Anderson2009-07-151-1/+1
| | | | | | AllocaInst and MallocInst. llvm-svn: 75863
* Move EVER MORE stuff over to LLVMContext.Owen Anderson2009-07-141-1/+1
| | | | llvm-svn: 75703
* This started as a small change, I swear. Unfortunately, lots of things call ↵Owen Anderson2009-07-091-1/+1
| | | | | | the [I|F]CmpInst constructors. Who knew!? llvm-svn: 75200
* "LLVMContext* " --> "LLVMContext *"Owen Anderson2009-07-061-1/+1
| | | | llvm-svn: 74878
* Thread LLVMContext through the constant folding APIs, which touches a lot of ↵Owen Anderson2009-07-061-1/+1
| | | | | | files. llvm-svn: 74844
* Second batch of passes using LLVMContext.Owen Anderson2009-07-031-8/+11
| | | | llvm-svn: 74753
* fix inverted logic pointed out by John McCall, noticed by inspection.Chris Lattner2009-07-021-1/+1
| | | | | | | This was considering vector intrinsics to have cost 2, but non-vector intrinsics to have cost 1, which is backward. llvm-svn: 74698
* Fix a bunch of other places that used operator[] to test whetherDan Gohman2009-07-021-6/+10
| | | | | | a key is present in a std::map or DenseMap to use find instead. llvm-svn: 74676
* make jump threading handle lexically identical compare instructionsChris Lattner2009-06-191-4/+17
| | | | | | | | as if they were multiple uses of the same instruction. This interacts well with the existing loadpre that j-t does to open up many new jump threads earlier. llvm-svn: 73768
* Teach jump threading to look at comparisons between phi nodes and non-constants.Nick Lewycky2009-06-191-25/+48
| | | | llvm-svn: 73755
* fix some problems spotted by Duncan and Nicolas GeoffrayChris Lattner2009-05-041-2/+2
| | | | llvm-svn: 70872
* * Sink 4 duplicates of edge threading validity checks and DOUT prints intoChris Lattner2009-05-041-71/+84
| | | | | | | | | | ThreadEdge directly. This shares the code, but is just a refactoring. * Make JumpThreading compute the set of loop headers and avoid threading across them. This prevents jump threading from forming irreducible loops (goodness) but also prevents it from threading in other cases that are beneficial (see the comment above FindFunctionBackedges). llvm-svn: 70820
* Fix a debug info dependency in jump threading.Dale Johannesen2009-03-171-2/+5
| | | | llvm-svn: 67064
* this wasn't intended to go in.Chris Lattner2009-03-061-34/+0
| | | | llvm-svn: 66252
* Change various llvm utilities to use PrettyStackTraceProgram inChris Lattner2009-03-061-0/+34
| | | | | | | their main routines. This makes the tools print their argc/argv commands if they crash. llvm-svn: 66248
* Fix PR3353, infinitely jump threading an infinite loop make from switches.Chris Lattner2009-01-191-0/+5
| | | | llvm-svn: 62529
* Fix PR3298, a crash in Jump Threading. Apparently even Chris Lattner2009-01-091-0/+4
| | | | | | jump threading can have bugs, who knew? ;-) llvm-svn: 61983
* remove DebugIterations option. Despite the accusations, Chris Lattner2008-12-081-14/+1
| | | | | | | jump threading has been shown to only expose problems not have bugs itself. I'm sure it's completely bug free! ;-) llvm-svn: 60725
* Start simplifying a switch that has a successor that is a switch.Chris Lattner2008-12-041-0/+74
| | | | llvm-svn: 60534
* add a debugging option to help track down j-t problems.Chris Lattner2008-12-041-1/+14
| | | | llvm-svn: 60514
* Teach jump threading some more simple tricks:Chris Lattner2008-12-031-16/+156
| | | | | | | | | | | | | | | | 1) have it fold "br undef", which does occur with surprising frequency as jump threading iterates. 2) teach j-t to delete dead blocks. This removes the successor edges, reducing the in-edges of other blocks, allowing recursive simplification. 3) Fold things like: br COND, BBX, BBY BBX: br COND, BBZ, BBW which also happens because jump threading iterates. llvm-svn: 60470
* switch a couple more calls to use array_pod_sort.Chris Lattner2008-12-011-1/+2
| | | | llvm-svn: 60337
* Teach jump threading to clean up after itself, DCE and constfolding theChris Lattner2008-12-011-1/+24
| | | | | | | | | new instructions it simplifies. Because we're threading jumps on edges with constants coming in from PHI's, we inherently are exposing a lot more constants to the new block. Folding them and deleting dead conditions allows the cost model in jump threading to be more accurate as it iterates. llvm-svn: 60327
* don't call MergeBasicBlockIntoOnlyPred on a block whose onlyChris Lattner2008-11-281-1/+2
| | | | | | | predecessor is itself. This doesn't make sense, and this is a dead infinite loop anyway. llvm-svn: 60210
* Fix PR3138: if we merge the entry block into another block, make sure toChris Lattner2008-11-271-0/+6
| | | | | | move the other block back up into the entry position! llvm-svn: 60179
* move FindAvailableLoadedValue from JumpThreading to Transforms/Utils.Chris Lattner2008-11-271-63/+3
| | | | llvm-svn: 60166
* move MergeBasicBlockIntoOnlyPred to Transforms/Utils.Chris Lattner2008-11-271-31/+0
| | | | llvm-svn: 60162
* rename ThreadBlock to ProcessBlock, since it does other things thanChris Lattner2008-11-271-4/+4
| | | | | | just simple threading. llvm-svn: 60157
* Make jump threading substantially more powerful, in the following ways:Chris Lattner2008-11-271-0/+273
| | | | | | | | | | | | | | | | | 1. Make it fold blocks separated by an unconditional branch. This enables jump threading to see a broader scope. 2. Make jump threading able to eliminate locally redundant loads when they feed the branch condition of a block. This frequently occurs due to reg2mem running. 3. Make jump threading able to eliminate *partially redundant* loads when they feed the branch condition of a block. This is common in code with lots of loads and stores like C++ code and 255.vortex. This implements thread-loads.ll and rdar://6402033. Per the fixme's, several pieces of this should be moved into Transforms/Utils. llvm-svn: 60148
* Tidy up several unbeseeming casts from pointer to intptr_t.Dan Gohman2008-09-041-1/+1
| | | | llvm-svn: 55779
* Enable first-class aggregates support.Dan Gohman2008-07-231-14/+1
| | | | | | | | | | | | Remove the GetResultInst instruction. It is still accepted in LLVM assembly and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove support for return instructions with multiple values. These are auto-upgraded to use InsertValueInst instructions. The IRBuilder still accepts multiple-value returns, and auto-upgrades them to InsertValueInst instructions. llvm-svn: 53941
* Fix some constructs that gcc-4.4 warns about.Duncan Sands2008-05-271-2/+2
| | | | llvm-svn: 51591
OpenPOWER on IntegriCloud