summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
...
* Create constant expression casts instead of constant instructions if possibleChris Lattner2003-04-281-2/+12
| | | | llvm-svn: 5968
* Fix several bugs:Chris Lattner2003-04-281-9/+20
| | | | | | | | | | * Warnings were emitted all of the time and were really annoying * Functions could not be resolved unless they had external linkage. Linkonce linkage was not allowed * ConstantPointerRef's were not handled when linking functions we now actually handle cast (CPR) to X -> cast (NewCPR) to X llvm-svn: 5967
* Avoid naming things exactly the sameChris Lattner2003-04-271-1/+1
| | | | llvm-svn: 5966
* Fix bug: ADCE/2003-04-25-PHIPostDominateProblem.llChris Lattner2003-04-251-9/+10
| | | | llvm-svn: 5952
* Fix major problem with PHI node traversal: rechecking PHIs should go intoChris Lattner2003-04-251-1/+1
| | | | | | the visit function. The worklist is for when their lattice value changes. llvm-svn: 5927
* Minor non-functional changes:Chris Lattner2003-04-251-61/+47
| | | | | | | | | * Spell propagate right * Improve performance of phi node handling * Delete using directive * Other minor changes llvm-svn: 5920
* Fix bug: mem2reg/2003-04-24-MultipleIdenticalSuccessors.llChris Lattner2003-04-251-7/+8
| | | | llvm-svn: 5919
* Make the levelraise pass be well behaved w.r.t the TargetData that the currentChris Lattner2003-04-244-125/+126
| | | | | | PassMAnager provides. llvm-svn: 5896
* Fix iterator invalidation problemChris Lattner2003-04-241-2/+7
| | | | llvm-svn: 5895
* Make sure that the cloned module retains the type symbol table entries!Chris Lattner2003-04-241-0/+9
| | | | llvm-svn: 5894
* Make sure to preserve endiannes and pointer size when cloning modules!Chris Lattner2003-04-241-0/+2
| | | | llvm-svn: 5892
* Fix Bug: Linker/2003-04-23-LinkOnceLost.llChris Lattner2003-04-231-30/+40
| | | | llvm-svn: 5879
* Remove unnecesary &*'sChris Lattner2003-04-2318-35/+35
| | | | llvm-svn: 5872
* New pass to lower switch instructions to branch instructionsChris Lattner2003-04-231-0/+102
| | | | llvm-svn: 5865
* Minor cleanupsChris Lattner2003-04-231-6/+6
| | | | llvm-svn: 5863
* Add warning when linking modules with disagreeing target propertiesChris Lattner2003-04-221-0/+4
| | | | llvm-svn: 5845
* Preserve the new moduleID fieldChris Lattner2003-04-221-1/+1
| | | | llvm-svn: 5835
* Fix bug: 2003-01-30-LinkerRename.llChris Lattner2003-04-211-7/+33
| | | | llvm-svn: 5828
* Fix linking a function with qualifiers to a external function declaration:Chris Lattner2003-04-211-6/+18
| | | | | | Fixed bug: Linker/2003-04-21-Linkage.ll llvm-svn: 5827
* Fix bug where use still existed in dead codeChris Lattner2003-04-211-0/+2
| | | | llvm-svn: 5824
* Implement: FunctionResolve/2003-04-18-ForwardDeclGlobal.llChris Lattner2003-04-191-43/+39
| | | | llvm-svn: 5816
* Fix bug: Mem2reg/2003-04-18-DeadBlockProblem.llChris Lattner2003-04-181-4/+17
| | | | llvm-svn: 5810
* Global constants CAN be externalChris Lattner2003-04-181-3/+3
| | | | llvm-svn: 5808
* Refactor CloneFunction to expose the new CloneBasicBlock functionChris Lattner2003-04-181-13/+22
| | | | llvm-svn: 5806
* New const_cast instead of c style castChris Lattner2003-04-181-1/+1
| | | | llvm-svn: 5805
* Change the interface to constant expressions to allow automatic foldingChris Lattner2003-04-162-2/+2
| | | | llvm-svn: 5793
* Add new linkage types to support a real frontendChris Lattner2003-04-1611-76/+104
| | | | llvm-svn: 5786
* Make help message more clearChris Lattner2003-04-131-2/+4
| | | | llvm-svn: 5775
* * Fix bug: Mem2Reg/2003-04-10-DFNotFound.llChris Lattner2003-04-101-9/+26
| | | | | | | * Make Mem2Reg assign version numbers now for renamed variables instead of .mem2reg suffixes. This produces what people think of as SSA. llvm-svn: 5771
* Initial checkin of PRE on LLVM. This implementation is still lacking inChris Lattner2003-03-311-0/+614
| | | | | | | | | | | | | | | several ways: * Load expressions are not PRE'd well. Alias Analysis should be used to get accurate information when computing anticipatibility. * The expression collection implementation does not handle PHI nodes properly, thus the implementation misses many opportunities to PRE. * This code could be sped up quite a bit Despite these flaws, the code seems to work well, and handles PR's as one would expect. llvm-svn: 5759
* * We now preserve the no-critical-edge pass (because we cannot insert ↵Chris Lattner2003-03-311-11/+17
| | | | | | | | critical edges) * Small modification to be more efficient llvm-svn: 5757
* Move BreakCriticalEdges pass to lib/Transforms/UtilsChris Lattner2003-03-211-155/+0
| | | | llvm-svn: 5754
* Add the following instcombine xforms:Chris Lattner2003-03-111-29/+74
| | | | | | | | - Implement simple reassociation: (A|c1)|(B|c2) == (A|B)|(c1|c2) - (A & C1)+(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0 - (A & C1)^(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0 llvm-svn: 5743
* Implement: -A*-B == A*BChris Lattner2003-03-101-0/+4
| | | | llvm-svn: 5740
* Add new transformation: // (~A | ~B) == (~(A & B))Chris Lattner2003-03-101-8/+19
| | | | llvm-svn: 5738
* Generalize not and neg comparison testers to allow constant to be considered ↵Chris Lattner2003-03-101-27/+41
| | | | | | | | | | | | | | | | | | | | not'able and neg'able. This allows optimization of this: int %test4(int %A, int %B) { %a = xor int %A, -1 %c = and int %a, 5 ; 5 = ~c2 %d = xor int %c, -1 ret int %d } into this: int %test4(int %A, int %B) { ; No predecessors! %c.demorgan = or int %A, -6 ; <int> [#uses=1] ret int %c.demorgan } llvm-svn: 5736
* Generalize (A+c1)+c2 optimization to work with all associative operatorsChris Lattner2003-03-101-35/+50
| | | | llvm-svn: 5733
* Minor change, no functionality diffChris Lattner2003-03-101-3/+3
| | | | llvm-svn: 5731
* Fix bug: (x << 100) wasn't folded to 0, but (x >> 100) was (when x is unsigned)Chris Lattner2003-03-101-7/+48
| | | | | | Implement new shift optimizations for shifting the result of a shift. llvm-svn: 5729
* Implement: (A|B)^B == A & (~B)Chris Lattner2003-03-101-0/+25
| | | | llvm-svn: 5728
* Fix bug: SimplifyCFG/2003-03-07-DominateProblem.llChris Lattner2003-03-071-2/+19
| | | | llvm-svn: 5722
* Implement %test7 in InstCombine/getelementptr.llChris Lattner2003-03-051-7/+21
| | | | llvm-svn: 5704
* Implement CFGSimplify/PhiBlockMerge*.llChris Lattner2003-03-051-10/+36
| | | | llvm-svn: 5702
* Implement testcase CFGSimplify/EqualPHIEdgeBlockMerge.llChris Lattner2003-03-051-10/+24
| | | | llvm-svn: 5699
* Convert LICM over to use AliasSetTracker. Besides being nicer, this ↵Chris Lattner2003-03-031-164/+45
| | | | | | | | automatically allows LICM to use access sizes to help alias analysis be more precise. llvm-svn: 5693
* Eliminate tons of bogus warningsChris Lattner2003-03-031-8/+10
| | | | llvm-svn: 5686
* Change the mem2reg interface to accept a TargetData argumentChris Lattner2003-03-033-9/+19
| | | | llvm-svn: 5685
* Fix bug: LICM/2003-02-28-PromoteDifferentType.llChris Lattner2003-02-281-2/+8
| | | | llvm-svn: 5675
* Fix bug I introduced yesterday :(Chris Lattner2003-02-281-1/+2
| | | | llvm-svn: 5669
* Fix bug: LICM/2003-02-27-PreheaderExitNodeUpdate.llChris Lattner2003-02-281-1/+5
| | | | llvm-svn: 5667
OpenPOWER on IntegriCloud