aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2010-04-06performance: get rid of repeated dereferencing of use_iterator by caching ↵Gabor Greif
its result git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100550 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-06make more two predicates constantGabor Greif
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100549 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-06performance: get rid of repeated dereferencing of use_iterator by caching ↵Gabor Greif
its result git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100547 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-06const-ize predicate ValueIsOnlyUsedLocallyOrStoredToOneGlobalGabor Greif
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100546 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-06use CallSite to access calls vs. invokes uniformlyGabor Greif
and remove assumptions about operand order git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100544 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-05fix a really nasty bug that Evan was tracking in SCCP. When resolvingChris Lattner
undefs in branches/switches, we have two cases: a branch on a literal undef or a branch on a symbolic value which is undef. If we have a literal undef, the code was correct: forcing it to a constant is the right thing to do. If we have a branch on a symbolic value that is undef, we should force the symbolic value to a constant, which then makes the successor block live. Forcing the condition of the branch to being a constant isn't safe if later paths become live and the value becomes overdefined. This is the case that 'forcedconstant' is designed to handle, so just use it. This fixes rdar://7765019 but there is no good testcase for this, the one I have is too insane to be useful in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100478 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-05some code cleanups, use SwitchInst::findCaseValue, reduce indentationChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100468 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-05Code clean up.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100467 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-04Reapply address space patch after fixing an issue in MemCopyOptimizer.Mon P Wang
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03require that the branch being controlled by the IV Chris Lattner
exits the loop. With this information we can guarantee the iteration count of the loop is bounded by the compare. I think this xforms is finally safe now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100285 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03add integer overflow check for the fp induction variable Chris Lattner
checker. Amusingly, we already had tests that we should have rejects because they would be miscompiled in the testsuite. The remaining issue with this is that we don't check that the branch causes us to exit the loop if it fails, so we don't actually know if we remain in bounds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100284 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03add a comment and fix some consistency issues, convertingChris Lattner
to a signed vs unsigned value depending on the sign of the constant fp means that we can't distinguish between a truly negative number and a positive number so large the 32nd bit is set. So, do don't this! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100283 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03fix PR6761, a miscompilation due to the fp->int IV conversionChris Lattner
stuff. More bugs remain though. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100282 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03just eliminate the uitofp checks. This code isn't doingChris Lattner
the required validity checks in the first place, and supporting a condition large enough to require the 32'nd bit isn't worth it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100280 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03rename PH -> PN to be consistent with WeakPN and the restChris Lattner
of llvm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100276 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03improve comment and drop a dead check. If PH hadChris Lattner
no uses, it would have been deleted by RecursivelyDeleteTriviallyDeadInstructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100275 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03strength reduce a ridiculous use of APInt.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100274 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03rename stuff improve comment grammar.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100273 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03simplify some code and resolve a fixme.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100272 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03There is no guarantee that the increment and the branchChris Lattner
are in the same block. Insert the new increment in the correct location. Also, more cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100271 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03first half of a pass through IndVarSimplify::HandleFloatingPointIV,Chris Lattner
this cleans up a bunch of code and also fixes several crashes and miscompiles. More to come unfortunately, this optimization is quite broken. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100270 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03don't internalize available_externally functions, they areChris Lattner
really just declarations. This is related to PR6524 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100269 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03Revert all my SSAUpdater patches. The PHI placement algorithm is not correctBob Wilson
(what was I thinking?) and there's also a problem with LCSSA. I'll try again later with fixes. --- Reverse-merging r100263 into '.': U lib/Transforms/Utils/SSAUpdater.cpp --- Reverse-merging r100177 into '.': G lib/Transforms/Utils/SSAUpdater.cpp --- Reverse-merging r100148 into '.': G lib/Transforms/Utils/SSAUpdater.cpp --- Reverse-merging r100147 into '.': U include/llvm/Transforms/Utils/SSAUpdater.h G lib/Transforms/Utils/SSAUpdater.cpp --- Reverse-merging r100131 into '.': G include/llvm/Transforms/Utils/SSAUpdater.h G lib/Transforms/Utils/SSAUpdater.cpp --- Reverse-merging r100130 into '.': G lib/Transforms/Utils/SSAUpdater.cpp --- Reverse-merging r100126 into '.': G include/llvm/Transforms/Utils/SSAUpdater.h G lib/Transforms/Utils/SSAUpdater.cpp --- Reverse-merging r100050 into '.': D test/Transforms/GVN/2010-03-31-RedundantPHIs.ll --- Reverse-merging r100047 into '.': G include/llvm/Transforms/Utils/SSAUpdater.h G lib/Transforms/Utils/SSAUpdater.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100264 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03Add a DEBUG_TYPE for the SSAUpdater.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100263 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03Code refactoring.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100262 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Revert r100191 since it breaks objc in clang Mon P Wang
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Reapply address space patch after fixing an issue in MemCopyOptimizer.Mon P Wang
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Manually notify ScalarEvolution before making an operand replacement, sinceDan Gohman
it can't currently observe such changes automatically. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100186 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Recommit 100158 now that the buildbots are happy again.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100177 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Revert the recent alignment changes. They're broken for -Os because,Dan Gohman
in particular, they end up aligning strings at 16-byte boundaries, and there's no way for GlobalOpt to check OptForSize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100172 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Revert 100158 in case it is causing some of the buildbot problems.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100164 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Make globalopt refine global variable alignment.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100160 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Check for terminating conditions before adding PHIs to the worklists.Bob Wilson
This is more efficient than adding them to the worklist and then ignoring them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100158 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01Remove trailing whitespace.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100148 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01Rewrite another SSAUpdater function to avoid recursion.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100147 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01Change another SSAUpdater function to avoid recursion.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100131 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01Simplify the code to check for existing PHIs, now that it is only used inBob Wilson
one place. This removes the template function added in svn 94690. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100130 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01The SSAUpdater should avoid recursive traversals of the CFG, since that mayBob Wilson
blow out the stack for really big functions. Start by fixing an easy case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100126 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01Introduce ImmutableCallSite, useful for contexts where no mutationGabor Greif
is necessary. Inherits from new templated baseclass CallSiteBase<> which is highly customizable. Base CallSite on it too, in a configuration that allows full mutation. Adapt some call sites in analyses to employ ImmutableCallSite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100100 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01Clean up this file a little, no functionality change. This is a subset of myNick Lewycky
patch back in r94322. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100097 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-31Rewrite part of the SSAUpdater to be more careful about inserting redundantBob Wilson
PHIs. The previous algorithm was unable to reliably detect when existing PHIs in a cycle can be reused. I'm still working on reducing a testcase. Radar 7711900. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100047 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-31Fix a nasty dangling-pointer heisenbug that couldDale Johannesen
generate wrong code pretty much anywhere AFAICT. A case that hits the bug reproducibly is impossible, but the situation was like this: Addr = ... Store -> Addr Addr2 = GEP , 0, 0 Store -> Addr2 Handling the first store, the code changed replaced Addr with a sunkaddr and deleted Addr, but not its table entry. Code in OptimizedBlock replaced Addr2 with a bitcast; if that happened to reuse the memory of Addr, the old table entry was erroneously found when handling the second store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100044 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Added support for address spaces and added a isVolatile field to memcpy, ↵Mon P Wang
memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Fix a grammaro.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99917 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30fix two cases where the arguments were extracted from the wrong range out of ↵Gabor Greif
the InvokeInst spotted by baldrick -- thanks\! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99914 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-27Remove another memory leak from ABCD by using Edges by value instead ofJeffrey Yasskin
pointer. There was also a SmallPtrSet whose settiness wasn't being used, so I changed it to a SmallVector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99713 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-27In ABCD, change the non-null Bound*s to Bound&s.Jeffrey Yasskin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99711 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-27Fix a memory leak in ABCD by giving ownership of Bound objects to theJeffrey Yasskin
MemoizedResultChart. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99710 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-27When we promote a load of an argument make sure to take the alignmentEric Christopher
of the previous load - it's usually important. For example, we don't want to blindly turn an unaligned load into an aligned one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99699 91177308-0d34-0410-b5e6-96231b3b80d8