aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Analysis
AgeCommit message (Collapse)Author
2010-11-29Merge System into Support.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120298 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23Expand a little on the description of what InstructionSimplify does.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120016 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23Clarify that constant folding of instructions applies when all operandsDuncan Sands
are constant. There was in fact one exception to this (phi nodes) - so remove that exception (InstructionSimplify handles this so there should be no loss). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120015 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-23Optimize a common case in the Lengauer-Tarjan dominators algorithm. This gives aCameron Zwarich
9.7% speedup running domtree on test-suite. Reviewed by Chris Lattner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120003 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21the getLocationForSource/Dest methods can be static.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119929 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21add "getLocation" method to AliasAnalysis for getting the source andChris Lattner
destination location of a memcpy/memmove. I'm not clear about whether TBAA works on these, so I'm leaving it out for now. Dan, please revisit this when convenient. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119928 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-21implement PR8576, deleting dead stores with intervening may-alias stores.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119927 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-19Simplify, no functionality change.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119797 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-18Factor code for testing whether replacing one value with anotherDuncan Sands
preserves LCSSA form out of ScalarEvolution and into the LoopInfo class. Use it to check that SimplifyInstruction simplifications are not breaking LCSSA form. Fixes PR8622. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119727 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-18Document the units for the Size field.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119711 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-18Introduce memoization for ScalarEvolution dominates and properlyDominatesDan Gohman
queries, and SCEVExpander getRelevantLoop queries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119595 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Factor out the code for purging a SCEV from all the various memoization maps.Dan Gohman
Some of these maps may merge in the future, but for now it's convenient to have a utility function for them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119587 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Merge the implementations of isLoopInvariant and hasComputableLoopEvolution, andDan Gohman
memoize the results. This improves compile time in code which highly complex expressions which get queried many times. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119584 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Make SCEV::getType() and SCEV::print non-virtual. Move SCEV::hasOperandDan Gohman
to ScalarEvolution. Delete SCEV::~SCEV. SCEV is no longer virtual. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119578 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Move SCEV::dominates and properlyDominates to ScalarEvolution.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119570 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Move SCEV::isLoopInvariant and hasComputableLoopEvolution to be memberDan Gohman
functions of ScalarEvolution, in preparation for memoization and other optimizations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119562 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Verify SCEVAddRecExpr's invariant in ScalarEvolution::getAddRecExprDan Gohman
instead of in SCEVAddRecExpr's constructor, in preparation for an upcoming change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119554 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Fix ScalarEvolution's range memoization to avoid using aDan Gohman
default ctor with ConstantRange. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119550 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Move some those Xor simplifications which don't require creating newDuncan Sands
instructions out of InstCombine and into InstructionSimplify. While there, introduce an m_AllOnes pattern to simplify matching with integers and vectors with all bits equal to one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119536 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Previously SimplifyInstruction could report that an instructionDuncan Sands
simplified to itself (this can only happen in unreachable blocks). Change it to return null instead. Hopefully this will fix some buildbot failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119490 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Memoize results from ScalarEvolution's getUnsignedRange and getSignedRange.Dan Gohman
This fixes some extreme compile times on unrolled sha512 code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119455 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-16In which I discover the existence of loops. Threading an operationDuncan Sands
over a phi node by applying it to each operand may be wrong if the operation and the phi node are mutually interdependent (the testcase has a simple example of this). So only do this transform if it would be correct to perform the operation in each predecessor of the block containing the phi, i.e. if the other operands all dominate the phi. This should fix the FFMPEG snow.c regression reported by İsmail Dönmez. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119347 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-14If dom tree information is available, make it possible to passDuncan Sands
it to get better phi node simplification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119055 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-14Strip trailing whitespace.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119038 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-11Add helper functions for computing the Location of load, store,Dan Gohman
and vaarg instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118845 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-11Add comments.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118799 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-11Add brief doxygen comments for AliasResult enum values.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118792 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-11Set NonLocalDepInfo's Size field to UnknownSize when invalidatingDan Gohman
it, so that it doesn't appear to be a known size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118748 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Take care of special characters while creating named MDNode name to hold ↵Devang Patel
function specific local variable's info. This fixes radar 8653152. I am checking in testcase as a separate check-in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118726 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Enhance GVN to do more precise alias queries for non-local memoryDan Gohman
references. For example, this allows gvn to eliminate the load in this example: void foo(int n, int* p, int *q) { p[0] = 0; p[1] = 1; if (n) { *q = p[0]; } } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118714 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Rename AccessesArguments and AccessesArgumentsReadonly, and rewriteDan Gohman
their comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118696 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Fix a copy+pasto Duncan noticed.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118693 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Add a doesAccessArgPointees helper function, and update code to useDan Gohman
it, and to be consistent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118692 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Factor out the code for testing whether a function accessesDan Gohman
arbitrary memory into a helper function, and adjust some comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118687 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Give NonLocalDepResult a NonLocalDepEntry member, replacingDan Gohman
indivudal members holding the same data, to clarify the relationship between NonLocalDepResult and NonLocalDepEntry. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118686 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Make ModRefBehavior a lattice. Use this to clean up AliasAnalysisDan Gohman
chaining and simplify FunctionAttrs' GetModRefBehavior logic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118660 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Convert comments to doxygen syntax.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118628 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09AccessesArgumentsReadonly is read-only.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118615 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Add a AccessesArgumentsReadonly ModRefBehavior value, so that the intrinsicDan Gohman
property IntrReadArgMem can be modeled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118614 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Factor out the logic for onlyReadsMemory into a helper function.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118611 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Delete AccessesArgumentsAndGlobals, which was unused.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118610 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-08Add some comments noting some correspondences between ModRefBehaviorDan Gohman
values, LLVM IR function attributes, and LLVM intrinsic attributes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118455 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-08Document parameters. Fix typos.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118424 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-08Extend the AliasAnalysis::pointsToConstantMemory interface to allow itDan Gohman
to optionally look for constant or local (alloca) memory. Teach BasicAliasAnalysis::pointsToConstantMemory to look through Select and Phi nodes, and to support looking for local memory. Remove FunctionAttrs' PointsToLocalOrConstantMemory function, now that AliasAnalysis knows all the tricks that it knew. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118412 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-08Delete getIntrinsicModRefBehavior. Clients can just use the normalDan Gohman
getModRefBehavior now, since it now understands intrinsics as well as normal functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118411 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-08Add comments.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118408 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-04Introduce DIBuilder. It is intended to be a front-end friendly interface to ↵Devang Patel
emit debuggging information entries in LLVM IR. To create debugging information for a pointer, using DIBUilder front-end just needs DBuilder.CreatePointerType(Ty, Size); instead of DebugFactory.CreateDerivedType(llvm::dwarf::DW_TAG_pointer_type, TheCU, "", getOrCreateMainFile(), 0, Size, 0, 0, 0, OCTy); git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118248 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-04Add getFile() to get DIFile of a DIType.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118247 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-29Simplify.Devang Patel
- DIFile F = getFieldAs<DIFile>(6); - return F.getDirectory(); + return getFieldAs<DIFile>(6).getDirectory(); git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117662 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-28Fix indentation.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117601 91177308-0d34-0410-b5e6-96231b3b80d8