aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2010-09-15Approved by Chris:Bill Wendling
$ svn merge -c 113911 https://llvm.org/svn/llvm-project/llvm/trunk --- Merging r113911 into '.': U test/Transforms/ConstantMerge/dont-merge.ll U lib/Transforms/IPO/ConstantMerge.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_28@113912 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-14Approved by Chris:Bill Wendling
$ svn merge -c 113057 https://llvm.org/svn/llvm-project/llvm/trunk --- Merging r113057 into '.': A test/Transforms/LoopSimplify/preserve-scev.ll U lib/Transforms/Utils/LoopSimplify.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_28@113851 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-14Approved by Chris:Bill Wendling
$ svn merge -c 113820 https://llvm.org/svn/llvm-project/llvm/trunk --- Merging r113820 into '.': U test/Transforms/LICM/crash.ll U lib/Transforms/Scalar/LICM.cpp Log: fix PR8102, a case where we'd copyValue from a value that we already deleted. Fix this by doing the copyValue's before we delete stuff! git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_28@113823 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-07Approved by Chris:Bill Wendling
$ svn merge -c 113257 https://llvm.org/svn/llvm-project/llvm/trunk --- Merging r113257 into '.': A test/Transforms/InstCombine/sqrt.ll D test/Transforms/InstCombine/2010-07-19-sqrt.ll Renaming test. $ svn merge -c 113260 https://llvm.org/svn/llvm-project/llvm/trunk --- Merging r113260 into '.': U test/Transforms/InstCombine/sqrt.ll U lib/Transforms/InstCombine/InstCombineCasts.cpp Log: Fix a serious performance regression introduced by r108687 on linux: turning (fptrunc (sqrt (fpext x))) -> (sqrtf x) is great, but we have to delete the original sqrt as well. Not doing so causes us to do two sqrt's when building with -fmath-errno (the default on linux). git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_28@113265 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-06Approved by Chris:Bill Wendling
$ svn merge -c 113146 https://llvm.org/svn/llvm-project/llvm/trunk --- Merging r113146 into '.': U test/Transforms/LICM/crash.ll U lib/Transforms/Scalar/LICM.cpp Log: fix PR8067, an over-aggressive assertion in LICM. git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_28@113152 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-04fix a bug in my licm rewrite when a load from the promoted memoryChris Lattner
location is being re-stored to the memory location. We would get a dangling pointer from the SSAUpdate data structure and miss a use. This fixes PR8068 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113042 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-03Propagate non-local comparisons. Fixes PR1757.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113025 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-03Add support for simplifying a load from a computed value to a load from a ↵Owen Anderson
global when it is provable that they're equivalent. This fixes PR4855. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112994 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-02fix more AST updating bugs, correcting miscompilation in PR8041Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112878 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-02Reapply commit 112699, speculatively reverted by echristo, sinceDuncan Sands
I'm sure it is harmless. Original commit message: If PrototypeValue is erased in the middle of using the SSAUpdator then the SSAUpdator may access freed memory. Instead, simply pass in the type and name explicitly, which is all that was used anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112810 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01deepen my MMX/SRoA hack to avoid hurting non-x86 codegen.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112763 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Fix loop unswitching's assumption that a code path which eitherDan Gohman
infinite loops or exits will eventually exit. This fixes PR5373. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112745 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01JumpThreading keeps LazyValueInfo up to date, so we don't need to rerun itOwen Anderson
if we schedule another LVI-using pass afterwards. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112722 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Speculatively revert 112699 and 112702, they seem to be causingEric Christopher
self host errors on clang-x86-64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112719 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01If PrototypeValue is erased in the middle of using the SSAUpdatorDuncan Sands
then the SSAUpdator may access freed memory. Instead, simply pass in the type and name explicitly, which is all that was used anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112699 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01add a gross hack to work around a problem that Argiris reportedChris Lattner
on llvmdev: SRoA is introducing MMX datatypes like <1 x i64>, which then cause random problems because the X86 backend is producing mmx stuff without inserting proper emms calls. In the short term, force off MMX datatypes. In the long term, the X86 backend should not select generic vector types to MMX registers. This is being worked on, but won't be done in time for 2.8. rdar://8380055 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112696 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Revert 112442 and 112440 until the compile time problems introducedDan Gohman
by 112440 are resolved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112692 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31licm is wasting time hoisting constant foldable operations,Chris Lattner
instead of hoisting them, just fold them away. This occurs in the testcase for PR8041, for example. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112669 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31tidy upChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112643 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31More cleanups of my JumpThreading transforms, including extracting some ↵Owen Anderson
duplicated code into a helper function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112634 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add an RAII helper to make cleanup of the RecursionSet more fool-proof.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112628 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Only try to clean up the current block if we changed that block already.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112625 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Refactor my fix for PR5652 to terminate the predecessor lookups after the ↵Owen Anderson
first failure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112620 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Fix an infinite loop; merging two functions will create a new function (if theNick Lewycky
two are weak, we make them thunks to a new strong function) so don't iterate through the function list as we're modifying it. Also add back the outermost loop which got removed during the cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112595 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Don't perform an extra traversal of the function just to do cleanup. We can ↵Owen Anderson
safely simplify instructions after each block has been processed without worrying about iterator invalidation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112594 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Rename ValuePropagation to a more descriptive CorrelatedValuePropagation.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112591 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Rename file to something more descriptive.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112590 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31More Chris-inspired JumpThreading fixes: use ConstantExpr to correctly ↵Owen Anderson
constant-fold undef, and be more careful with its return value. This actually exposed an infinite recursion bug in ComputeValueKnownInPredecessors which theoretically already existed (in JumpThreading's handling of and/or of i1's), but never manifested before. This patch adds a tracking set to prevent this case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112589 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Switch to DenseSet, simplifying much more code. We now have a single iterationNick Lewycky
where we hash, compare and fold, instead of one iteration where we build up the hash buckets and a second one to fold. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112582 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Remove r111665, which implemented store-narrowing in InstCombine. Chris ↵Owen Anderson
discovered a miscompilation in it, and it's not easily fixable at the optimizer level. I'll investigate reimplementing it in DAGCombine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112575 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30Fix a typo.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112560 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30Cleanups suggested by Chris.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112553 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30Re-apply r112539, being more careful to respect the return values of the ↵Owen Anderson
constant folding methods. Additionally, use the ConstantExpr::get*() methods to simplify some constant folding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112550 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30Add statistics to evaluate this pass.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112545 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30Revert r112539. It accidentally introduced a miscompilation.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112543 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30Fixes and cleanups pointed out by Chris. In general, be careful to handle 0 ↵Owen Anderson
results from ComputeValueKnownInPredecessors (indicating undef), and re-use existing constant folding APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112539 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29rewrite DwarfEHPrepare to use SSAUpdater to promote its allocasChris Lattner
instead of PromoteMemToReg. This allows it to stop using DF and DT, eliminating a computation of DT and DF from clang -O3. Clang is now down to 2 runs of DomFrontier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112457 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29two changes: 1) make AliasSet hold the list of call sites with anChris Lattner
assertingvh so we get a violent explosion if the pointer dangles. 2) Fix AliasSetTracker::deleteValue to remove call sites with by-pointer comparisons instead of by-alias queries. Using findAliasSetForCallSite can cause alias sets to get merged when they shouldn't, and can also miss alias sets when the call is readonly. #2 fixes PR6889, which only repros with a .c file :( git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112452 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29LICM does get dead instructions input to it. Instead of sinking themChris Lattner
out of loops, just delete them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112451 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29use moveBefore instead of remove+insert, it avoids some Chris Lattner
symtab manipulation, so its faster (in addition to being more elegant) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112450 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29revert 112448 for now.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112449 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29optimize LICM::hoist to use moveBefore. Correct its updatingChris Lattner
of AST to remove the hoisted instruction from the AST, since it is no longer in the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112448 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29fix some bugs (found by inspection) where LICM would not updateChris Lattner
LICM correctly. When sinking an instruction, it should not add entries for the sunk instruction to the AST, it should remove the entry for the sunk instruction. The blocks being sunk to are not in the loop, so their instructions shouldn't be in the AST (yet)! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112447 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29rework the ownership of subloop alias information: instead ofChris Lattner
keeping them around until the pass is destroyed, keep them around a) just when useful (not for outer loops) and b) destroy them right after we use them. This should reduce memory use and fixes potential bugs where a loop is deleted and another loop gets allocated to the same address. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112446 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29apparently unswitch had the same "Feature". Stop itsChris Lattner
claims that it preserves domfrontier if it doesn't really. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112445 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29now that loop passes don't use DomFrontier, there is no reasonChris Lattner
for the unroller to pretend it supports updating it. It still has a horrible hack for DomTree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112444 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29Optionally rerun dedicated-register filtering after applyingDan Gohman
other filtering techniques, as those may allow it to filter out more obviously unprofitable candidates. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112441 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29Fix several areas in LSR to do a better job keeping the mainDan Gohman
LSRInstance data structures up to date. This fixes some pessimizations caused by stale data which will be exposed in an upcoming change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112440 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29Refactor the three main groups of code out ofDan Gohman
NarrowSearchSpaceUsingHeuristics into separate functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112439 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29Delete a bogus check.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112438 91177308-0d34-0410-b5e6-96231b3b80d8