summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
* Fixed a segfault in gccld.John Criswell2003-08-071-2/+4
| | | | | | | | The original code does not work because the value from WorkList.end() is invalidated once WorkList.erase() is called. To ensure proper functionality, we must ensure that WorkList.erase() is always called before WorkList.end(). llvm-svn: 7673
* Added code for pool allocating only the pool-allocatable data structures in ↵Sumant Kowshik2003-08-071-12/+46
| | | | | | the presence of collapsed nodes + a couple of bug fixes llvm-svn: 7662
* Remove unnecessary use of NonCopyableChris Lattner2003-08-061-4/+3
| | | | llvm-svn: 7641
* Fixed minor bug in SafeToHoist and made some changes suggested by Chris.Tanya Lattner2003-08-051-19/+10
| | | | llvm-svn: 7614
* Fixed LICM bug that hoists trapping instructions that are not guaranteed to ↵Tanya Lattner2003-08-051-5/+59
| | | | | | execute. llvm-svn: 7612
* Minor changes:Chris Lattner2003-08-051-52/+48
| | | | | | | * Expand most tabs into spaces * Move #define DEBUG_TYPE to top of file to avoid warning llvm-svn: 7611
* Major bug fixes including a memory leak and tracking some exceptional ↵Sumant Kowshik2003-08-051-83/+317
| | | | | | conditions. Also added support for including global and indirect call information in the DS graphs used by the pool allocation llvm-svn: 7605
* Fix bug: SimplifyCFG/2003-08-05-InvokeCrash.llChris Lattner2003-08-051-1/+2
| | | | | | Fix bug: SimplifyCFG/2003-08-05-MishandleInvoke.ll llvm-svn: 7599
* DEBUG got moved to Support/Debug.hChris Lattner2003-08-0119-24/+38
| | | | llvm-svn: 7492
* Instcombine: (A >> c1) << c2 for signed integersChris Lattner2003-07-241-10/+12
| | | | llvm-svn: 7295
* Reorganization of code, no functional changes.Chris Lattner2003-07-241-47/+48
| | | | | | Now it shoudl be a bit more efficient llvm-svn: 7292
* Allow folding several instructions into casts, which can simplify a lotChris Lattner2003-07-241-7/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of codes. For example, short kernel (short t1) { t1 >>= 8; t1 <<= 8; return t1; } became: short %kernel(short %t1.1) { %tmp.3 = shr short %t1.1, ubyte 8 ; <short> [#uses=1] %tmp.5 = cast short %tmp.3 to int ; <int> [#uses=1] %tmp.7 = shl int %tmp.5, ubyte 8 ; <int> [#uses=1] %tmp.8 = cast int %tmp.7 to short ; <short> [#uses=1] ret short %tmp.8 } before, now it becomes: short %kernel(short %t1.1) { %tmp.3 = shr short %t1.1, ubyte 8 ; <short> [#uses=1] %tmp.8 = shl short %tmp.3, ubyte 8 ; <short> [#uses=1] ret short %tmp.8 } which will become: short %kernel(short %t1.1) { %tmp.3 = and short %t1.1, 0xFF00 ret short %tmp.3 } This implements cast-set.ll:test4 and test5 llvm-svn: 7290
* Minor cleanupsChris Lattner2003-07-241-3/+3
| | | | llvm-svn: 7289
* Fix bug: FunctionResolve/2003-07-23-CPR-Reference.llChris Lattner2003-07-231-6/+8
| | | | | | | This fixes a long time annoyance which caused prototypes for bzero, bcopy, bcmp, fputs, and fputs_unlocked to never get deleted. Grr. llvm-svn: 7285
* Add commentsChris Lattner2003-07-231-0/+9
| | | | llvm-svn: 7283
* Remove explicit check for: not (not X) = X, it is already handled because ↵Chris Lattner2003-07-231-10/+16
| | | | | | | | | xor is commutative - InstCombine: (X & C1) ^ C2 --> (X & C1) | C2 iff (C1&C2) == 0 - InstCombine: (X | C1) ^ C2 --> (X | C1) & ~C2 iff (C1&C2) == C2 llvm-svn: 7282
* InstCombine: (X ^ C1) & C2 --> (X & C2) iff (C1&C2) == 0Chris Lattner2003-07-231-9/+11
| | | | llvm-svn: 7272
* - InstCombine: (X | C1) & C2 --> X & C2 iff C1 & C1 == 0Chris Lattner2003-07-231-10/+33
| | | | | | | - InstCombine: (X | C) & C --> C - InstCombine: (X | C1) & C2 --> (X | (C1&C2)) & C2 llvm-svn: 7269
* IC: (X & C1) | C2 --> (X | C2) & (C1|C2)Chris Lattner2003-07-231-1/+26
| | | | | | | | | IC: (X ^ C1) | C2 --> (X | C2) ^ (C1&~C2) We are now guaranteed that all 'or's will be inside of 'and's, and all 'and's will be inside of 'xor's, if the second operands are constants. llvm-svn: 7264
* IC: (X ^ C1) & C2 --> (X & C2) ^ (C1&C2)Chris Lattner2003-07-231-4/+16
| | | | | | Minor code cleanup llvm-svn: 7262
* InstCombine: (X ^ 4) == 8 --> X == 12Chris Lattner2003-07-231-1/+6
| | | | llvm-svn: 7260
* IC: (X & 5) == 13 --> falseChris Lattner2003-07-231-5/+25
| | | | | | IC: (X | 8) == 4 --> false llvm-svn: 7257
* Simplify code by using ConstantInt::getRawValue instead of checking to seeChris Lattner2003-07-233-10/+3
| | | | | | whether the constant is signed or unsigned, then casting llvm-svn: 7252
* Fix bug: TailDup/2003-07-22-InfiniteLoop.llChris Lattner2003-07-231-0/+5
| | | | llvm-svn: 7243
* - InstCombine (cast (xor A, B) to bool) ==> (setne A, B)Chris Lattner2003-07-221-5/+44
| | | | | | - InstCombine (cast (and X, (1 << size(X)-1)) to bool) ==> x < 0 llvm-svn: 7241
* Added code that checks to see if a global variable is external before replacingJohn Criswell2003-07-211-1/+1
| | | | | | a load of the global variable with the variable's constant value. llvm-svn: 7216
* Added check for inlinable functionAnand Shukla2003-07-181-1/+55
| | | | llvm-svn: 7206
* A pass to combine multiple backedges that go to same targetAnand Shukla2003-07-181-0/+227
| | | | llvm-svn: 7201
* Dinakar and I fixed a bug where we were trying to get the initializer ofJohn Criswell2003-07-171-1/+1
| | | | | | | an external constant. Since external constants don't have initializers, we were failing on an assert() call in llvm/GlobalVariable.h. llvm-svn: 7193
* Trace loads and stores as they happen (stores were beingVikram S. Adve2003-07-111-10/+17
| | | | | | | | | | | remembered in valuesStoredInFunction, but never traced at function return, and that's too late to be finding the error anyway). Stores trace both the value and the address being stored to, but after some experience I think only values should be traced. The pointer hash table just fills up far too quickly if every store address were traced. llvm-svn: 7169
* Added functionality to instrmentation passAnand Shukla2003-07-101-99/+111
| | | | llvm-svn: 7161
* Merged in autoconf branch. This provides configuration via the autoconfJohn Criswell2003-06-302-2/+2
| | | | | | system. llvm-svn: 7014
* Eliminate using declarations, adjust for new DSGraph APIChris Lattner2003-06-301-21/+19
| | | | llvm-svn: 6992
* Allow the inlining limit to be controlled from the command line!Chris Lattner2003-06-281-1/+5
| | | | llvm-svn: 6929
* Add support to globaldce for deleting dead function prototypesChris Lattner2003-06-261-1/+7
| | | | llvm-svn: 6918
* When internalizing global ctor/dtor list, also mark it constant. This is ↵Chris Lattner2003-06-261-0/+8
| | | | | | | | gross, but until DSA is working all of the time and is totally reliable, we do this. llvm-svn: 6917
* Add support for elimination of load instruction from global constantsChris Lattner2003-06-261-0/+48
| | | | llvm-svn: 6912
* Instcombine: X * -1 -> -XChris Lattner2003-06-251-3/+4
| | | | llvm-svn: 6904
* Fix bug: Mem2Reg/2003-06-26-IterativePromote.llChris Lattner2003-06-251-10/+17
| | | | llvm-svn: 6901
* Add argument to DAE to allow operation on non-internal functionsChris Lattner2003-06-251-9/+21
| | | | llvm-svn: 6895
* Fix bug: ADCE/2003-06-24-BadSuccessor.llChris Lattner2003-06-241-12/+35
| | | | llvm-svn: 6891
* Do not mark ALL terminators live if any instruciton in the block is live. ↵Chris Lattner2003-06-241-2/+23
| | | | | | | | | We only want to mark it live if it is an unconditional branch. This fixes bug: ADCE/2002-05-28-Crash.ll and makes this pass _much_ more useful. llvm-svn: 6887
* Fix bug: SCCP/2003-06-24-OverdefinedPHIValue.llChris Lattner2003-06-241-4/+5
| | | | llvm-svn: 6883
* Fix bug: TailDup/2003-06-24-Simpleloop.llChris Lattner2003-06-241-1/+2
| | | | llvm-svn: 6881
* Implement new transforms:Chris Lattner2003-06-231-4/+33
| | | | | | | Replace (cast (sub A, B) to bool) -> (setne A, B) Replace (cast (add A, B) to bool) -> (setne A, -B) llvm-svn: 6873
* avoid dividing by zero when dealing with zero sized types (like [0 x double])Chris Lattner2003-06-232-0/+2
| | | | llvm-svn: 6862
* Add paranoia checkingChris Lattner2003-06-221-1/+1
| | | | llvm-svn: 6856
* Test changeChris Lattner2003-06-221-0/+1
| | | | llvm-svn: 6852
* Initial checkin of Tail duplication pass.Chris Lattner2003-06-221-0/+324
| | | | llvm-svn: 6846
* Instcombine cast (getelementptr Ptr, 0, 0, 0) to ... into: cast Ptr to ...Chris Lattner2003-06-211-0/+17
| | | | | | | This fixes type safety problems in a variety of benchmarks that were confusing DSA. llvm-svn: 6837
OpenPOWER on IntegriCloud