summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
Commit message (Collapse)AuthorAgeFilesLines
* fix ComputeMaskedBits handling of zext/sext/trunc to work with vectors.Chris Lattner2009-09-081-6/+9
| | | | | | This fixes PR4905 llvm-svn: 81174
* add some comments to describe the invariants.Chris Lattner2009-09-081-0/+12
| | | | llvm-svn: 81173
* Do not try to override non-virtual methods, especiallyDuncan Sands2009-09-061-13/+0
| | | | | | | when the new method gives the same result as the original (as far as I can see). This will hopefully pacify icc. llvm-svn: 81131
* Mark more constants unsigned, as warned about by icc (#68).Duncan Sands2009-09-061-4/+4
| | | | | | Patch by Erick Tryzelaar. llvm-svn: 81116
* Revert r80926. It causes loop unswitch assertion and slow down some JIT ↵Evan Cheng2009-09-061-10/+0
| | | | | | tests significantly. llvm-svn: 81101
* Prevent warnings on compilers for which its not clear that assert won't return.Andreas Neustifter2009-09-041-0/+1
| | | | llvm-svn: 81044
* Cleaned up ProfileVerifierPass.Andreas Neustifter2009-09-041-57/+78
| | | | | | (See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090831/086219.html) llvm-svn: 81007
* Revert "--- Reverse-merging r80908 into '.':", I already "fixed" this.Daniel Dunbar2009-09-031-1/+1
| | | | llvm-svn: 80970
* Revert 80959. It isn't sufficient to solve the full problem. And itDan Gohman2009-09-031-12/+6
| | | | | | introduced regressions in the Ocaml bindings tests. llvm-svn: 80969
* --- Reverse-merging r80908 into '.':Bill Wendling2009-09-031-1/+1
| | | | | | | | | | | D test/Analysis/Profiling --- Reverse-merging r80907 into '.': U lib/Analysis/ProfileInfoLoaderPass.cpp Attempt to remove failure in the self-hosting build bot. llvm-svn: 80966
* Remove the API for creating ConstantExprs with the nsw, nuw, inbounds,Dan Gohman2009-09-031-6/+12
| | | | | | | | | | | | | | | and exact flags. Because ConstantExprs are uniqued, creating an expression with this flag causes all expressions with the same operands to have the same flag, which may not be safe. Add, sub, mul, and sdiv ConstantExprs are usually folded anyway, so the main interesting flag here is inbounds, and the constant folder already knows how to set the inbounds flag automatically in most cases, so there isn't an urgent need for the API support. This can be reconsidered in the future, but for now just removing these API bits eliminates a source of potential trouble with little downside. llvm-svn: 80959
* Smallvectorize switchExitBlocks.Dan Gohman2009-09-031-1/+1
| | | | llvm-svn: 80942
* Add a verifyAnalysis to LoopInfo, LoopSimplify, and LCSSA form that verifyDan Gohman2009-09-031-0/+10
| | | | | | | | | that these passes are properly preserved. Fix several transformation passes that claimed to preserve LoopSimplify form but weren't. llvm-svn: 80926
* Move getUniqueExitBlocks from LoopBase to Loop, since they depend onDan Gohman2009-09-031-0/+68
| | | | | | | LoopSimplify form, which is currently only available on Loops (and not MachineLoops). Also, move the code out of the header file. llvm-svn: 80923
* Don't try to verify a LoopPass analysis if the loop has been deleted.Dan Gohman2009-09-031-1/+3
| | | | llvm-svn: 80919
* Remove references to expression "handles", which are no longer used.Dan Gohman2009-09-031-1/+1
| | | | llvm-svn: 80918
* Fix build warning.Andreas Neustifter2009-09-031-1/+1
| | | | llvm-svn: 80912
* Code Cleanup.Andreas Neustifter2009-09-031-16/+9
| | | | | | (See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090831/086139.html) llvm-svn: 80909
* Remove undefined behavior when loading optimal edge profile info.Daniel Dunbar2009-09-031-1/+1
| | | | llvm-svn: 80907
* back out my recent commit (r80858), it seems to break self-hosting ↵Gabor Greif2009-09-032-2/+2
| | | | | | buildbot's stage 2 configure llvm-svn: 80871
* re-commit r66920 (which has been backed out in r66953) I may have more luck ↵Gabor Greif2009-09-032-2/+2
| | | | | | this time. I'll back out if needed... llvm-svn: 80858
* Fix DbgStopPointInst->getFileName/getDirectory, broken by the MDNodification inTorok Edwin2009-09-021-0/+5
| | | | | | r80406, and readd a -print-dbginfo test. llvm-svn: 80778
* fix PR4848 an infinite loop when indexing down through a recursive gepChris Lattner2009-09-021-1/+1
| | | | | | | and we get the original pointer type. This doesn't mean that we're at the first pointer being indexed. Correct the predicate. llvm-svn: 80762
* revert my patch, duncan points out what is wrong with my logic. AddChris Lattner2009-09-021-4/+8
| | | | | | a comment so that I don't change this in the future :) llvm-svn: 80760
* one more try at making this simpler, hopefully it won't break everything :)Chris Lattner2009-09-021-4/+4
| | | | llvm-svn: 80759
* Complicate Chris's simplification, avoiding complaintsDuncan Sands2009-09-021-1/+5
| | | | | | | about singular iterators when building with expensive checks turned on. llvm-svn: 80757
* Fix build warning.Daniel Dunbar2009-09-011-1/+1
| | | | llvm-svn: 80730
* debug intrinsics do not go in the callgraph, this fixes a coupleChris Lattner2009-09-011-1/+2
| | | | | | clang regtest failures. llvm-svn: 80724
* Fix a regression I introduced in r80708, found by llvm-test.Chris Lattner2009-09-011-5/+12
| | | | llvm-svn: 80718
* OptimalEdgeProfiling: Reading in Profiles.Andreas Neustifter2009-09-012-7/+187
| | | | | | This enables LLVM to read the OptimalEdgeProfiles. llvm-svn: 80715
* Small fix in ProfileEstimator that eliminates duplicated code.Andreas Neustifter2009-09-011-2/+1
| | | | llvm-svn: 80711
* remove CallGraphNode::replaceCallSite, it is redundant with other APIs.Chris Lattner2009-09-012-23/+1
| | | | llvm-svn: 80708
* doxygenate RefreshCallGraph, add a new 'verification mode', and run it after Chris Lattner2009-09-011-4/+37
| | | | | | | CGSCC passes make change to ensure they are updating the callgraph correctly (when assertions are enabled). llvm-svn: 80698
* simpler solution to iterator invalidation "problem" foundChris Lattner2009-09-011-11/+6
| | | | | | by expensive checking. llvm-svn: 80695
* Do not manipulate invalid iterators. This fixes theDuncan Sands2009-09-011-6/+11
| | | | | | llvm-gcc build when expensive checking is turned on. llvm-svn: 80671
* Update CMakeLists.Benjamin Kramer2009-09-011-0/+1
| | | | llvm-svn: 80669
* Preparation for Optimal Edge Profiling:Andreas Neustifter2009-09-011-1/+8
| | | | | | | | | Optimal edge profiling is only possible when blocks with no predecessors get an virtual edge (BB,0) that counts the execution frequencies of this function-exiting blocks. This patch makes the necessary changes before actually enabling optimal edge profiling. llvm-svn: 80667
* Preparation for Optimal Edge Profiling:Andreas Neustifter2009-09-011-0/+228
| | | | | | | | This adds a pass to verify the current profile against the flow conditions. This is very helpful when later on trying to perserve the profiling information during all passes. llvm-svn: 80666
* Change CallGraphNode to maintain it's Function as an AssertingVHChris Lattner2009-09-012-37/+34
| | | | | | | | | | | | for sanity. This didn't turn up any bugs. Change CallGraphNode to maintain its "callsite" information in the call edges list as a WeakVH instead of as an instruction*. This fixes a broad class of dangling pointer bugs, and makes CallGraph have a number of useful invariants again. This fixes the class of problem indicated by PR4029 and PR3601. llvm-svn: 80663
* Introduce DILocation.Devang Patel2009-09-011-0/+12
| | | | llvm-svn: 80648
* Subprogram is a scope. Derive DISubprogram from DIScope.Devang Patel2009-08-311-1/+18
| | | | llvm-svn: 80637
* Rename DIBlock as DILexicalBlock.Devang Patel2009-08-311-2/+10
| | | | llvm-svn: 80633
* Don't use an iterator which is potentially invalidated.Dan Gohman2009-08-311-1/+1
| | | | llvm-svn: 80632
* Derive DICompileUnit from DIScope.Devang Patel2009-08-311-0/+8
| | | | llvm-svn: 80627
* Extend the ValuesAtScope cache to cover all expressions, not justDan Gohman2009-08-311-20/+24
| | | | | | | | | | | | | | SCEVUnknowns, as the non-SCEVUnknown cases in the getSCEVAtScope code can also end up repeatedly climing through the same expression trees, which can be unusably slow when the trees are very tall. Also, add a quick check for SCEV pointer equality to the main SCEV comparison routine, as the full comparison code can be expensive in the case of large expression trees. These fix compile-time problems in some pathlogical cases. llvm-svn: 80623
* Introduce DIScope.Devang Patel2009-08-311-0/+16
| | | | llvm-svn: 80620
* Oops. Fix inverted logic in assertion check.Devang Patel2009-08-311-6/+6
| | | | llvm-svn: 80618
* Simplify isDerivedType() and other predicate interface.Devang Patel2009-08-311-22/+59
| | | | llvm-svn: 80602
* cleanups pointed out by duncanChris Lattner2009-08-311-2/+1
| | | | llvm-svn: 80595
* Step #1 to giving Callgraph some sane invariants. The problems with callgraphChris Lattner2009-08-312-27/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | stem from the fact that we have two types of passes that need to update it: 1. callgraphscc and module passes that are explicitly aware of it 2. Functionpasses (and loop passes etc) that are interlaced with CGSCC passes by the CGSCC Passmgr. In the case of #1, we can reasonably expect the passes to update the call graph just like any analysis. However, functionpasses are not and generally should not be CG aware. This has caused us no end of problems, so this takes a new approach. Logically, the CGSCC Pass manager can rescan every function after it runs a function pass over it to see if the functionpass made any updates to the IR that affect the callgraph. This allows it to catch new calls introduced by the functionpass. In practice, doing this would be slow. This implementation keeps track of whether or not the current scc is dirtied by a function pass, and, if so, delays updating the callgraph until it is actually needed again. This was we avoid extraneous rescans, but we still have good invariants when the callgraph is needed. Step #2 of the "give Callgraph some sane invariants" is to change CallGraphNode to use a CallBackVH for the callsite entry of the CallGraphNode. This way we can immediately remove entries from the callgraph when a FunctionPass is active instead of having dangling pointers. The current pass tries to tolerate these dangling pointers, but it is just an evil hack. This is related to PR3601/4835/4029. This also reverts r80541, a hack working around the sad lack of invariants. llvm-svn: 80566
OpenPOWER on IntegriCloud