summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* ExprTypeConvert will already do this transformation, no need to specializeChris Lattner2002-05-021-21/+0
| | | | | | it here. llvm-svn: 2431
* Be a little more efficient, do not generate loads and stores with indices in ↵Chris Lattner2002-05-021-25/+37
| | | | | | them. llvm-svn: 2430
* Fix bug: test/Regression/Transforms/LevelRaise/2002-05-02-BadCastElimination.llChris Lattner2002-05-021-0/+9
| | | | llvm-svn: 2429
* * Add ability to eliminate a bunch of different cascading cast variationsChris Lattner2002-05-021-2/+60
| | | | | | * Allow elimination of getelementptr X, uint 0 (which is a noop) llvm-svn: 2428
* Fixed bug: ↵Chris Lattner2002-05-011-0/+3
| | | | | | test/Regression/Transforms/Mem2Reg/2002-05-01-ShouldNotPromoteThisAlloca.ll llvm-svn: 2423
* Remove unneccesary passChris Lattner2002-04-301-86/+0
| | | | llvm-svn: 2420
* Add folding rules for mul X, 0 and mul X, 2Chris Lattner2002-04-291-3/+13
| | | | llvm-svn: 2417
* Significantly clean up SCCP pass. Now the two classes are merged and inChris Lattner2002-04-291-44/+37
| | | | | | an anonymous namespace where they belong. llvm-svn: 2415
* Range insertion now returns an iteratorChris Lattner2002-04-291-5/+2
| | | | llvm-svn: 2414
* Remove unused files: This is the old induction varaible cannonicalizationChris Lattner2002-04-291-408/+0
| | | | | | pass built on top of interval analysis llvm-svn: 2411
* Fix for problem when allocating something like this:Chris Lattner2002-04-291-7/+3
| | | | | | malloc(100-i); llvm-svn: 2409
* changes because iMemory.h no longer #includes DerivedTypes.hChris Lattner2002-04-292-2/+4
| | | | | | This only requires Type.h anyway llvm-svn: 2405
* Eliminate dead global variablesChris Lattner2002-04-291-2/+20
| | | | llvm-svn: 2400
* Eliminate duplicate or unneccesary #include'sChris Lattner2002-04-2917-33/+1
| | | | llvm-svn: 2397
* Remove broken assertion.Chris Lattner2002-04-291-3/+5
| | | | llvm-svn: 2396
* Add new optional getPassName() virtual function that a Pass can overrideChris Lattner2002-04-2922-10/+63
| | | | | | to make debugging output a lot nicer. llvm-svn: 2395
* More cleanupsChris Lattner2002-04-291-59/+54
| | | | llvm-svn: 2392
* Code cleanupsChris Lattner2002-04-291-127/+111
| | | | llvm-svn: 2391
* Tighten up the AnalysisUsage of lots of passes, primarily to correctly ↵Chris Lattner2002-04-2812-3/+40
| | | | | | indicate whether or not they invalidate the CFGA llvm-svn: 2386
* Split ConstantVals.h into Constant.h and Constants.hChris Lattner2002-04-2818-18/+17
| | | | llvm-svn: 2378
* Eliminate the PromoteInstance class, incorporating it into the PromotePassChris Lattner2002-04-281-63/+57
| | | | | | class. llvm-svn: 2375
* Eliminate visited, CurrentValue, and WriteSets as instance variables ofChris Lattner2002-04-281-53/+54
| | | | | | | | PromoteInstance. Make them local variables that are passed around as appropriate. Especially in the case of CurrentValue, this makes the code simpler. llvm-svn: 2374
* * Fix bug: test/Regression/Transforms/Mem2Reg/2002-03-28-UninitializedVal.llChris Lattner2002-04-281-4/+12
| | | | | | * Minor cleanup that was missed in last patch llvm-svn: 2373
* This huge changeset is a strictly cleanup changeChris Lattner2002-04-281-228/+174
| | | | | | Bugfixes will come in the next revision so that the diff is obvious. llvm-svn: 2372
* Eliminate the cfg namespace, moving LoopInfo, Dominators, Interval* classesChris Lattner2002-04-285-26/+22
| | | | | | to the global namespace llvm-svn: 2370
* Be careful not to make "external" function internalChris Lattner2002-04-281-2/+3
| | | | llvm-svn: 2363
* Initial checkin of new "Internalize" pass for GCCLDChris Lattner2002-04-281-0/+38
| | | | llvm-svn: 2362
* Initial checkin of simple&fast SSA based GCSE algorithmChris Lattner2002-04-281-0/+272
| | | | llvm-svn: 2338
* Change the Dominator info and LoopInfo classes to keep track of ↵Chris Lattner2002-04-281-4/+4
| | | | | | | | BasicBlock's, not const BasicBlocks llvm-svn: 2337
* s/Method/FunctionChris Lattner2002-04-274-42/+41
| | | | llvm-svn: 2336
* * Rename MethodPass class to FunctionPassChris Lattner2002-04-2721-153/+119
| | | | | | | | | | | | | | | - Rename runOnMethod to runOnFunction * Transform getAnalysisUsageInfo into getAnalysisUsage - Method is now const - It now takes one AnalysisUsage object to fill in instead of 3 vectors to fill in - Pass's now specify which other passes they _preserve_ not which ones they modify (be conservative!) - A pass can specify that it preserves all analyses (because it never modifies the underlying program) * s/Method/Function/g in other random places as well llvm-svn: 2333
* Changes because the Terminator::getSuccessor function now FAILS if successorChris Lattner2002-04-272-6/+11
| | | | | | IDX is out of range instead of returning null. llvm-svn: 2332
* * Change Constant::getNullConstant to Constant::getNullValueChris Lattner2002-04-271-35/+51
| | | | | | * Add support for pool allocating array allocations of varying size llvm-svn: 2329
* Change Constant::getNullConstant to Constant::getNullValueChris Lattner2002-04-274-12/+10
| | | | llvm-svn: 2323
* Programs that actually free memory were brokenChris Lattner2002-04-181-1/+1
| | | | llvm-svn: 2307
* Add a fixme so that we don't forget this is broken.Chris Lattner2002-04-181-0/+3
| | | | llvm-svn: 2298
* Significantly rework InstructionCombining to work better and to be cleaner.Chris Lattner2002-04-181-94/+141
| | | | | | | | We now use an InstVisitor to delegate to different cases that we are interested in handling. We also fix the FIXME's by adding users to the worklist when appropriate. llvm-svn: 2292
* Convert SCCP over to use InstVisitor instead of hand crafted switchChris Lattner2002-04-181-181/+136
| | | | llvm-svn: 2286
* GEP instructions can never be constant propogated.Chris Lattner2002-04-181-7/+12
| | | | llvm-svn: 2284
OpenPOWER on IntegriCloud