summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
* Hash pointer values to a sequence number to get identical results fromVikram S. Adve2002-05-191-39/+197
| | | | | | | | | lli and llc. This is controlled with options -tracehash on|off. Also, added an option to specify which functions should be traced. Particularly useful to reduce output volume in basic-block tracing. llvm-svn: 2646
* * Make debug output conditional on #defineChris Lattner2002-05-161-13/+99
| | | | | | | | | * Add optimization to rank computation to not recursively search when unneccesary. * More agressively negate expressions to open reassociation opportunities. * Linearize (A+B)+(C+D) into ((A+B)+C)+D llvm-svn: 2637
* * Fix bug: test/Regression/Transforms/GCSE/2002-05-14-OperandSwap.llChris Lattner2002-05-141-7/+32
| | | | | | | By making sure to consider binary expressions identical if their operands are backwards, but swappable. llvm-svn: 2629
* Fix bug: test/Regression/Transforms/InstCombine/2002-05-14-SubFailure.llChris Lattner2002-05-141-1/+1
| | | | llvm-svn: 2627
* Fix bug: test/Regression/Transforms/InstCombine/2002-05-14-TouchDeletedInst.llChris Lattner2002-05-141-1/+12
| | | | | | | | | "This testcase caused instcombine to fail because it got the same instruction on it's worklist more than once (which is ok), but then deleted the instruction. Since the inst stayed on the worklist, as soon as it came back up to be processed, bad things happened, and opt asserted." llvm-svn: 2623
* Fix a major source of "type unsafety", where a cast is neccesary, but canChris Lattner2002-05-141-2/+40
| | | | | | | | | be put either before or after a load. We chose to cast the value loaded instead of the pointer to load from. Fixes bug: test/Regression/Transforms/LevelRaise/2002-05-10-LoadPeephole.ll llvm-svn: 2621
* Implement elimination of loadsChris Lattner2002-05-141-18/+176
| | | | llvm-svn: 2620
* Trivial cleanupsChris Lattner2002-05-131-2/+2
| | | | llvm-svn: 2617
* Initial checkin of LICM passChris Lattner2002-05-101-0/+262
| | | | llvm-svn: 2615
* Add support for printing out statistics information when -stats is added toChris Lattner2002-05-1017-17/+109
| | | | | | the command line llvm-svn: 2601
* Fix some bugs, straighten stuff out, more work needs to be done.Chris Lattner2002-05-101-19/+33
| | | | llvm-svn: 2600
* * Add support for the -stats command line option to report how much is changedChris Lattner2002-05-101-2/+24
| | | | | | | | * Make cast-of-self-ty DCE the dead cast instruction immediately instead of waiting for it to be DCE'd by another sweep over the function. This speeds this up noticably. llvm-svn: 2597
* Initial checkin of the PiNodeInsertion passChris Lattner2002-05-101-0/+185
| | | | llvm-svn: 2593
* Handle setcc <global*>, 0 instructions, Global pointers are never null!Chris Lattner2002-05-091-4/+18
| | | | llvm-svn: 2582
* Give the longer name to the instruction that will probably be eliminated laterChris Lattner2002-05-091-1/+2
| | | | llvm-svn: 2581
* Add ability to transform (x - (y - z)) into (x + (z - y))Chris Lattner2002-05-091-0/+13
| | | | llvm-svn: 2566
* * Combine: A-(-B) -> A + BChris Lattner2002-05-081-10/+6
| | | | | | * Bugfix: A + -B and -A + B llvm-svn: 2561
* Initial checkin of expression reassociation passChris Lattner2002-05-081-0/+198
| | | | llvm-svn: 2559
* Give the unified exit node a nameChris Lattner2002-05-071-1/+1
| | | | llvm-svn: 2550
* Fix bug: test/Regression/Transforms/ADCE/2002-01-31-UseStuckAround.llChris Lattner2002-05-071-46/+31
| | | | | | Cleanup code a lot llvm-svn: 2547
* Merge all individual .h files into a single Scalar.h fileChris Lattner2002-05-0710-10/+10
| | | | llvm-svn: 2537
* This doesn't use DCE!Chris Lattner2002-05-071-1/+0
| | | | llvm-svn: 2536
* Move UnifyFunctionExitNodes to Utils library: final resting place this timeChris Lattner2002-05-072-2/+2
| | | | llvm-svn: 2531
* fix comments and documentation in fileChris Lattner2002-05-071-6/+4
| | | | llvm-svn: 2530
* Split ChangeAllocations.cpp into Raise & LowerAllocations.cppChris Lattner2002-05-072-93/+118
| | | | llvm-svn: 2529
* Cleanup implementation a bitChris Lattner2002-05-071-4/+6
| | | | llvm-svn: 2526
* Updates to move some header files out of include/llvm/Transforms intoChris Lattner2002-05-076-40/+43
| | | | | | the Scalar and Utils subdirectories llvm-svn: 2523
* Reduce dependance on TransformInternals.h, instead using the TransformUtils ↵Chris Lattner2002-05-075-9/+18
| | | | | | library llvm-svn: 2518
* Add #include no longer included by llvm/Transforms/Scalar/ConstantProp.hChris Lattner2002-05-071-0/+1
| | | | llvm-svn: 2517
* Factor code out to the TransformUtils libraryChris Lattner2002-05-072-102/+5
| | | | llvm-svn: 2516
* Factor code out of TransformInternals into the Transform Utils libraryChris Lattner2002-05-072-88/+0
| | | | llvm-svn: 2515
* Build Transforms Utils libraryChris Lattner2002-05-071-1/+1
| | | | llvm-svn: 2514
* Add code pulled out of TransformInternals.cpp, ConstProp.cpp, and DCE.cppChris Lattner2002-05-073-0/+196
| | | | llvm-svn: 2513
* * Convert InstWorkList to vector instead of set, because on big programs itChris Lattner2002-05-071-5/+5
| | | | | | | is empirically faster by a noticable margin, even though duplicates can happen. llvm-svn: 2511
* * Remove all cfg simplification stuff for a new cfg simplify pass (todo)Chris Lattner2002-05-071-330/+85
| | | | | | * Convert to worklist instead of iterative algorithm llvm-svn: 2510
* Only do masking for unsigned values!Chris Lattner2002-05-061-8/+7
| | | | llvm-svn: 2504
* * Eliminate dead code that should have been removed in last revisionChris Lattner2002-05-061-146/+50
| | | | | | | | | * Convert main constant propogation pass to be worklist driven instead of iterative. * -constprop pass no longer "constant propogates" terminator instructions - CFG is now preserved! llvm-svn: 2502
* Handle X = phi Y --> X = YChris Lattner2002-05-061-0/+19
| | | | llvm-svn: 2501
* * Use simplified interface to constant propogation stuff.Chris Lattner2002-05-061-35/+8
| | | | | | | | * Remove dead PHI case (which could not work due to getNumOperands rather than getNumIncomingValues. This really belongs in InstCombine, anyway so we'll move it there. llvm-svn: 2497
* Clean up ADCE by removing extraneous wrapper classChris Lattner2002-05-061-43/+42
| | | | llvm-svn: 2494
* Combine not (not X) -> XChris Lattner2002-05-061-1/+14
| | | | llvm-svn: 2493
* Support more cases...Chris Lattner2002-05-061-16/+43
| | | | llvm-svn: 2490
* Add many more instruction combination simplificationsChris Lattner2002-05-061-10/+188
| | | | llvm-svn: 2484
* Merge blocks like this:Chris Lattner2002-05-061-26/+39
| | | | | | | | | | void "test3"(bool %T) { br bool %T, label %BB1, label %BB1 BB1: ret void } llvm-svn: 2472
* Implement constant propogation of shift instructionsChris Lattner2002-05-062-7/+42
| | | | llvm-svn: 2471
* Ok, really it only takes me 3 times to get this right!Chris Lattner2002-05-021-1/+1
| | | | | | Now use #if 0 instead of #ifdef 0 llvm-svn: 2448
* Oops, disable debugging code all the way. :)Chris Lattner2002-05-021-1/+1
| | | | llvm-svn: 2447
* * Finish the implementation of isEdgeFeasible this fixes bug:Chris Lattner2002-05-021-57/+77
| | | | | | | | | test/Regression/Transforms/SCCP/2002-05-02-EdgeFailure.ll * SCCP now preserves the CFG: It leaves conditional branches the way they are in the program, not simplifying them. A seperate pass should eliminate the potentially dead basic blocks and edges in the CFG. llvm-svn: 2446
* * Enable SCCP debugging to be turned on with a simple change of #defineChris Lattner2002-05-021-32/+52
| | | | | | | | | | | | | * Change worklist to a set so that duplicates cannot happen * Add support for the invoke instruction * Avoid marking store and free instructions as overdefined, since they cannot produce a value anyway. * Inline the OperandChangedState implementation * Add isEdgeFeasible in preparation to fix a bug. Right now it behaves exactly as before. * Remove obsolete comment about constant pools llvm-svn: 2445
* * Simplify the code by not bothering to name the folded constantChris Lattner2002-05-021-10/+7
| | | | | | | | * Do not skip the instruction immediately after a folded instruction. This was causing the testcase failure: test/Regression/Transforms/SCCP/2002-05-02-MissSecondInst.ll llvm-svn: 2443
OpenPOWER on IntegriCloud