summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
Commit message (Collapse)AuthorAgeFilesLines
* Make ModRefBehavior a lattice. Use this to clean up AliasAnalysisDan Gohman2010-11-104-19/+29
| | | | | | chaining and simplify FunctionAttrs' GetModRefBehavior logic. llvm-svn: 118660
* VAArg doesn't capture its operand.Dan Gohman2010-11-091-0/+3
| | | | llvm-svn: 118623
* Teach AliasAnalysis about AccessesArgumentsReadonly.Dan Gohman2010-11-091-6/+8
| | | | llvm-svn: 118621
* Teach LICM and AliasSetTracker about AccessesArgumentsReadonly.Dan Gohman2010-11-091-1/+1
| | | | llvm-svn: 118618
* Factorize code, no functionality change.Duncan Sands2010-11-091-34/+31
| | | | llvm-svn: 118516
* Re-introduce the MaxLookup limit to BasicAliasAnalysis'Dan Gohman2010-11-081-2/+8
| | | | | | | pointsToConstantMemory code to guard against possible compile time slowdowns. llvm-svn: 118440
* Implement getModRefBehavior for TypeBasedAliasAnalysis.Dan Gohman2010-11-081-0/+23
| | | | llvm-svn: 118416
* Extend the AliasAnalysis::pointsToConstantMemory interface to allow itDan Gohman2010-11-086-23/+71
| | | | | | | | | | | | 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. llvm-svn: 118412
* Delete getIntrinsicModRefBehavior. Clients can just use the normalDan Gohman2010-11-081-7/+0
| | | | | | | getModRefBehavior now, since it now understands intrinsics as well as normal functions. llvm-svn: 118411
* Teach BasicAliasAnalysis::getModRefBehavior(const Function *F)Dan Gohman2010-11-081-3/+11
| | | | | | to analyze intrinsic functions. llvm-svn: 118409
* Add simplification of floating point comparisons with the resultDuncan Sands2010-11-071-0/+20
| | | | | | | of a select instruction, the same as already exists for integer comparisons. llvm-svn: 118379
* Fix a README item: when doing a comparison with the resultDuncan Sands2010-11-071-2/+21
| | | | | | | | of a select instruction, see if doing the compare with the true and false values of the select gives the same result. If so, that can be used as the value of the comparison. llvm-svn: 118378
* Use arrays instead of constant-sized SmallVectors.Benjamin Kramer2010-11-041-132/+143
| | | | llvm-svn: 118257
* Introduce DIBuilder. It is intended to be a front-end friendly interface to ↵Devang Patel2010-11-042-0/+250
| | | | | | | | | | | | | 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); llvm-svn: 118248
* Fix DIType verifier. The element 3 is DIFile now.Devang Patel2010-11-021-3/+4
| | | | llvm-svn: 118054
* Make ScalarEvolution::forgetLoop forget all contained loops too, becauseDan Gohman2010-10-291-0/+5
| | | | | | | they may have ValuesAtScopes map entries referencing their outer loops. This fixes a user-after-free reported in PR8471. llvm-svn: 117698
* Teach memdep to use pointsToConstantMemory to determine that loadsDan Gohman2010-10-291-5/+10
| | | | | | from constant memory don't alias any stores. llvm-svn: 117636
* Support TBAA attachments on calls. This is somewhat experimental.Dan Gohman2010-10-251-0/+36
| | | | llvm-svn: 117317
* Fix chaining in TBAA's pointsToConstantMemory.Dan Gohman2010-10-251-1/+1
| | | | llvm-svn: 117314
* Only read one bit for testing for a readonly type, leaving the otherDan Gohman2010-10-251-2/+1
| | | | | | bits open for future uses. llvm-svn: 117301
* Add a comment.Dan Gohman2010-10-251-1/+3
| | | | llvm-svn: 117288
* Update comments; BasicAA is no longer necessarily the end of the chain.Dan Gohman2010-10-251-3/+3
| | | | llvm-svn: 117268
* Reintroduce these asserts, now that BasicAA is a normal AliasAnalysis pass.Dan Gohman2010-10-251-6/+3
| | | | llvm-svn: 117266
* Make some symbols static, move classes into anonymous namespaces.Benjamin Kramer2010-10-221-1/+1
| | | | llvm-svn: 117111
* Add some more documentation.Dan Gohman2010-10-211-15/+21
| | | | llvm-svn: 117070
* Explain what "constant" means here.Dan Gohman2010-10-211-1/+3
| | | | llvm-svn: 117053
* Update comments.Dan Gohman2010-10-211-3/+23
| | | | llvm-svn: 117048
* Memdep says that an instruction clobbers itselfDan Gohman2010-10-201-1/+4
| | | | | | when it means there is no specific clobber instruction. llvm-svn: 116960
* Factor out the main aliasing check into a separate function.Dan Gohman2010-10-201-24/+39
| | | | llvm-svn: 116958
* Fix comments; the type graph is currently a tree, not a DAG.Dan Gohman2010-10-201-3/+3
| | | | llvm-svn: 116954
* Add RegionPass support.Tobias Grosser2010-10-202-0/+277
| | | | | | | A RegionPass is executed like a LoopPass but on the regions detected by the RegionInfo pass instead of the loops detected by the LoopInfo pass. llvm-svn: 116905
* Fix CMake buildDouglas Gregor2010-10-201-0/+1
| | | | llvm-svn: 116903
* Move NoAA out of BasicAliasAnalysis.cpp into its own file, now thatDan Gohman2010-10-193-87/+92
| | | | | | | it doesn't have a special relationship with BasicAliasAnalysis anymore. llvm-svn: 116876
* Reapply r116831 and r116839, converting AliasAnalysis to useDan Gohman2010-10-196-41/+43
| | | | | | uint64_t, plus fixes for places I missed before. llvm-svn: 116875
* Revert r116831 and r116839, which are breaking selfhost builds.Dan Gohman2010-10-195-42/+40
| | | | llvm-svn: 116858
* Change AliasAnalysis and its clients to use uint64_t instead of unsignedDan Gohman2010-10-195-40/+42
| | | | | | for representing object sizes, for consistency with other parts of LLVM. llvm-svn: 116831
* Get rid of static constructors for pass registration. Instead, every pass ↵Owen Anderson2010-10-1927-36/+111
| | | | | | | | | | | | | | | | | exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
* Consistently use AliasAnalysis::UnknownSize instead of hardcoding ~0u.Dan Gohman2010-10-193-20/+29
| | | | llvm-svn: 116815
* Make the representation of AliasSets explicitly differentiateDan Gohman2010-10-181-2/+2
| | | | | | | between "not known yet" and "known no tbaa info" so that it can merge them properly. llvm-svn: 116767
* Don't pass the raw invalid pointer used to represent conflictingDan Gohman2010-10-181-3/+5
| | | | | | TBAA information to AliasAnalysis. llvm-svn: 116751
* Make AliasSetTracker TBAA-aware, enabling TBAA-enabled LICM.Dan Gohman2010-10-181-24/+49
| | | | llvm-svn: 116743
* Fix BasicAA to pass TBAAInfo through to the chained analysis.Dan Gohman2010-10-181-26/+47
| | | | llvm-svn: 116730
* Make TypeBasedAliasAnalysis default to doing nothing, with a command-lineDan Gohman2010-10-181-0/+10
| | | | | | option to enable it. llvm-svn: 116722
* Use chaining in TypeBasedAliasAnalysis::pointsToConstantMemory.Dan Gohman2010-10-181-1/+4
| | | | llvm-svn: 116721
* Make BasicAliasAnalysis a normal AliasAnalysis implementation whichDan Gohman2010-10-181-11/+25
| | | | | | | | | | | | does normal initialization and normal chaining. Change the default AliasAnalysis implementation to NoAlias. Update StandardCompileOpts.h and friends to explicitly request BasicAliasAnalysis. Update tests to explicitly request -basicaa. llvm-svn: 116720
* Eliminate some calls to Value::getNameStr.Benjamin Kramer2010-10-161-1/+1
| | | | llvm-svn: 116670
* Tolerate a null parent pointer.Dan Gohman2010-10-141-1/+1
| | | | llvm-svn: 116533
* add uadd_ov/usub_ov to apint, consolidate constant foldingChris Lattner2010-10-141-32/+28
| | | | | | | | | logic to use the new APInt methods. Among other things this implements rdar://8501501 - llvm.smul.with.overflow.i32 should constant fold which comes from "clang -ftrapv", originally brought to my attention from PR8221. llvm-svn: 116457
* Analysis groups need to initialize their default implementations.Owen Anderson2010-10-133-3/+3
| | | | llvm-svn: 116441
* Add Region::isTopLevelRegion().Tobias Grosser2010-10-131-3/+3
| | | | llvm-svn: 116402
OpenPOWER on IntegriCloud