summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
* simplify code, no functionality change.Chris Lattner2008-02-141-7/+9
| | | | llvm-svn: 47116
* Fix PR2032. Inform the alias analysis of changes to the underlying program.Nick Lewycky2008-02-141-0/+2
| | | | llvm-svn: 47111
* A loop latch phi node may have uses inside loop, not just in loop header.Devang Patel2008-02-131-4/+5
| | | | llvm-svn: 47093
* Rename APInt's isPositive to isNonNegative, to reflect what itDan Gohman2008-02-131-6/+6
| | | | | | actually does. llvm-svn: 47090
* While moving exit condition, do not drop loop latch on the floor.Devang Patel2008-02-131-4/+9
| | | | llvm-svn: 47089
* Keep track of exit value operand number when operands are swapped.Devang Patel2008-02-131-1/+6
| | | | llvm-svn: 47082
* remove some dead code.Chris Lattner2008-02-131-4/+0
| | | | llvm-svn: 47066
* Re-apply the patch to improve the optimizations of memcpy's, with severalOwen Anderson2008-02-121-1/+79
| | | | | | bugs fixed. This now passes PPC bootstrap. llvm-svn: 47026
* Fix for bug 1996: optimize out loads of undef. This code basically just Eli Friedman2008-02-121-1/+28
| | | | | | checks for a malloc/alloca immediately followed by a load. llvm-svn: 47006
* Fix scalarrepl to not 'miscompile' undefined code, part #2.Chris Lattner2008-02-101-1/+1
| | | | | | | This fixes the store case, my previous patch just fixed the load case. rdar://5707076. llvm-svn: 46932
* Fix PR 1995.Devang Patel2008-02-081-21/+17
| | | | llvm-svn: 46898
* Temporarily reverting:Bill Wendling2008-02-061-82/+0
| | | | | | | | http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080128/057882.html This is causing a miscompilation on PPC G5 and just now seeing it on iMac x86-64. llvm-svn: 46822
* Make RenamePass faster by making the 'is this a new phi node'Chris Lattner2008-02-051-11/+11
| | | | | | | | check more intelligent. This speeds up mem2reg from 5.29s to 0.79s on a synthetic testcase with tons of predecessors and phi nodes. llvm-svn: 46767
* Fix a bug compiling PR1978 (perhaps not the only one though) whichChris Lattner2008-02-051-54/+5
| | | | | | | | | was incorrectly simplifying "x == (gep x, 1, i)" into false, even though i could be negative. As it turns out, all the code to handle this already existed, we just need to disable the incorrect optimization case and let the general case handle it. llvm-svn: 46739
* Be more precise when eliminating pointers bue to memcpy's. This allows moreOwen Anderson2008-02-041-4/+10
| | | | | | stores to be deleted in some cases. llvm-svn: 46694
* Allow GVN to hack on memcpy's, making them open to further optimization.Owen Anderson2008-02-041-0/+82
| | | | llvm-svn: 46693
* There are some cases where icmp(add) can be folded into a new icmp. Handle them.Nick Lewycky2008-02-031-0/+32
| | | | llvm-svn: 46687
* Hack on vectors too.Nick Lewycky2008-02-031-1/+1
| | | | llvm-svn: 46684
* Fold away one multiply in instcombine. This would normally be caught inNick Lewycky2008-02-031-0/+24
| | | | | | reassociate anyways, but they could be generated during instcombine's run. llvm-svn: 46683
* Don't drop function/call return attributes like 'nounwind'.Duncan Sands2008-02-011-0/+8
| | | | llvm-svn: 46645
* Remove a couple more cases of "getNumUses() == 0". No need to walk the linkedNick Lewycky2008-01-301-2/+2
| | | | | | list just to see if whether the list is empty. llvm-svn: 46555
* Use empty() instead of comparing size() with zero.Nick Lewycky2008-01-301-1/+1
| | | | llvm-svn: 46554
* Don't DCE FreeInst's. We were using those! Patch from Owen Anderson.Nick Lewycky2008-01-301-1/+1
| | | | llvm-svn: 46553
* Make DSE much more aggressive by performing DCE earlier. Update a testcase ↵Owen Anderson2008-01-301-2/+55
| | | | | | to reflect this increased aggressiveness. llvm-svn: 46542
* Fix a bug where scalarrepl would discard offset if type would match.Chris Lattner2008-01-301-2/+2
| | | | | | | In practice this can only happen on code with already undefined behavior, but this is still a good thing to handle correctly. llvm-svn: 46539
* Don't let globalopt hack on volatile loads or stores.Chris Lattner2008-01-291-1/+4
| | | | llvm-svn: 46523
* Use empty() instead of comparing size() with zero.Dan Gohman2008-01-294-4/+4
| | | | llvm-svn: 46514
* eliminate additions of 0.0 when they are obviously dead. This has to be ↵Chris Lattner2008-01-291-0/+47
| | | | | | | | careful to avoid turning -0.0 + 0.0 -> -0.0 which is incorrect. llvm-svn: 46499
* Add support for eliminating memcpy's at the end of functions. Also fix some ↵Owen Anderson2008-01-291-26/+63
| | | | | | | | errors I noticed in the handling of eliminating stores to byval arguments. llvm-svn: 46494
* Filter loops that subtract induction variables.Devang Patel2008-01-291-17/+17
| | | | | | | | These loops are not yet handled. Fix PR 1912. llvm-svn: 46484
* Transform calls to memcpy into llvm.memcpy calls, patch by Eli Friedman.Chris Lattner2008-01-281-0/+30
| | | | llvm-svn: 46433
* Handle some more combinations of extend and icmp. Fixes PR1940.Nick Lewycky2008-01-281-8/+12
| | | | llvm-svn: 46431
* Fix PR1932 by disabling an xform invalid for fdiv.Chris Lattner2008-01-281-9/+10
| | | | llvm-svn: 46429
* Fix PR1938 by forcing the code that uses an undefined value to branch oneChris Lattner2008-01-281-4/+19
| | | | | | | | way or the other. Rewriting the code itself prevents subsequent analysis passes from making contradictory conclusions about the code that could cause an infeasible path to be made feasible. llvm-svn: 46427
* Be more careful modifying the use_list while also iterating through it.Nick Lewycky2008-01-271-1/+2
| | | | llvm-svn: 46417
* Revert r46393: readonly/readnone functions are noDuncan Sands2008-01-271-9/+6
| | | | | | longer allowed to write through byval arguments. llvm-svn: 46416
* The CorrelatedExpressionElimination pass is known to be buggy. Remove it.Bill Wendling2008-01-271-1486/+0
| | | | | | This fixes PR1769. llvm-svn: 46408
* Fold fptrunc(add (fpextend x), (fpextend y)) -> add(x,y), as GCC does.Chris Lattner2008-01-271-3/+75
| | | | llvm-svn: 46406
* If there are no machine instructions emitted for a function, then insertBill Wendling2008-01-261-14/+1
| | | | | | | a "nop" instruction so that we don't have the function's label associated with something that it's not supposed to be associated with. llvm-svn: 46394
* Create an explicit copy for byval parameters evenDuncan Sands2008-01-261-6/+9
| | | | | | when inlining a readonly function. llvm-svn: 46393
* If we have a function like this:Bill Wendling2008-01-261-1/+14
| | | | | | | | | | | | | | | | | | | | | | void bork() { int *address = 0; *address = 0; } It's compiled into LLVM code that looks like this: define void @bork() noreturn nounwind { entry: unreachable } This is bad on some platforms (like PPC) because it will generate the label for the function but no body. The label could end up being associated with some non-code related stuff, like a section. This places a "trap" instruction if the SimplifyCFG pass removed all code from the function leaving only one "unreachable" instruction. llvm-svn: 46387
* Do this more neatly.Duncan Sands2008-01-251-2/+1
| | | | llvm-svn: 46369
* DeadStoreElimination can treat byval parameters as if there were alloca's ↵Owen Anderson2008-01-251-5/+6
| | | | | | for the purpose of removing end-of-function stores. llvm-svn: 46351
* Enable the fix I just checked in, silly me.Nick Lewycky2008-01-221-1/+0
| | | | llvm-svn: 46247
* Multiply can be evaluated in a different type, so long as the target type hasNick Lewycky2008-01-221-0/+10
| | | | | | a smaller bitwidth. llvm-svn: 46244
* Make sure the caller doesn't use freed memory.Duncan Sands2008-01-201-1/+3
| | | | | | Fixes PR1935. llvm-svn: 46203
* Initializing an unsigned with ~0UL causes the compilerDuncan Sands2008-01-201-9/+9
| | | | | | to complain on x86-64 (gcc 4.1). Use ~0U instead. llvm-svn: 46197
* DAE bug fix. Don't lose parameter attributes on vararg arguments.Evan Cheng2008-01-171-5/+9
| | | | llvm-svn: 46113
* Fix arg promotion to propagate the correct attrs on the calls toChris Lattner2008-01-171-14/+25
| | | | | | | promoted functions. This is important for varargs calls in particular. Thanks to duncan for providing a great testcase. llvm-svn: 46108
* Handle attribute(used) global variables that are i8.Chris Lattner2008-01-161-14/+13
| | | | llvm-svn: 46090
OpenPOWER on IntegriCloud