summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/LiveVariables.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove unused member variable.Craig Topper2014-10-211-1/+0
| | | | llvm-svn: 220264
* Reverting r214064 and r215650 while investigating a pesky performance regressionArtyom Skrobov2014-09-231-8/+67
| | | | llvm-svn: 218296
* Use the proper post-order traversal in LiveVariables analysis,Artyom Skrobov2014-08-141-12/+7
| | | | | | | | | | | | | | | | to recover the performance after r214064. Also sorts out the naming for PostOrderCFGView, ReversePostOrderCFGView, BackwardDataflowWorklist and ForwardDataflowWorklist, to match the accepted terminology. Also unifies BackwardDataflowWorklist and ForwardDataflowWorklist to share the "worklist for prioritization, post-order traversal for fallback" logic, and to avoid repetitive sorting. Also cleans up comments in the affected area. llvm-svn: 215650
* Factoring DataflowWorklist out of LiveVariables and UninitializedValues analysesArtyom Skrobov2014-07-281-55/+1
| | | | llvm-svn: 214064
* [C++11] Use 'nullptr'. Analysis edition.Craig Topper2014-05-201-12/+12
| | | | llvm-svn: 209191
* remove a bunch of unused private methodsNuno Lopes2014-03-231-14/+0
| | | | | | | | | | | | | | | | | | found with a smarter version of -Wunused-member-function that I'm playwing with. Appologies in advance if I removed someone's WIP code. ARCMigrate/TransProperties.cpp | 8 ----- AST/MicrosoftMangle.cpp | 1 Analysis/AnalysisDeclContext.cpp | 5 --- Analysis/LiveVariables.cpp | 14 ---------- Index/USRGeneration.cpp | 10 ------- Sema/Sema.cpp | 33 +++++++++++++++++++++--- Sema/SemaChecking.cpp | 3 -- Sema/SemaDecl.cpp | 20 ++------------ StaticAnalyzer/Checkers/GenericTaintChecker.cpp | 1 9 files changed, 34 insertions(+), 61 deletions(-) llvm-svn: 204561
* [C++11] Replacing DeclStmt iterators decl_begin() and decl_end() with ↵Aaron Ballman2014-03-141-3/+2
| | | | | | iterator_range decls(). Updating all of the usages of the iterators with range-based for loops. llvm-svn: 203947
* [C++11] Convert sort predicates into lambdas.Benjamin Kramer2014-03-071-14/+8
| | | | | | No functionality change. llvm-svn: 203289
* [C++11] Replace llvm::tie with std::tie.Benjamin Kramer2014-03-021-1/+1
| | | | llvm-svn: 202639
* Revert "[analyzer] Refactor conditional expression evaluating code"Anna Zaks2013-12-061-18/+0
| | | | | | | | | | This reverts commit r189090. The original patch introduced regressions (see the added live-variables.* tests). The patch depends on the correctness of live variable analyses, which are not computed correctly. I've opened PR18159 to track the proper resolution to this problem. The patch was a stepping block to r189746. This is why part of the patch reverts temporary destructor tests that started crashing. The temporary destructors feature is disabled by default. llvm-svn: 196593
* Use pop_back_val() instead of both back() and pop_back().Robert Wilhelm2013-08-231-2/+1
| | | | | | No functionality change intended. llvm-svn: 189112
* [analyzer] Refactor conditional expression evaluating codePavel Labath2013-08-231-0/+18
| | | | | | | | | | | | | | | | | | | Summary: Instead of digging through the ExplodedGraph, to figure out which edge brought us here, I compute the value of conditional expression by looking at the sub-expression values. To do this, I needed to change the liveness algorithm a bit -- now, the full conditional expression also depends on all atomic sub-expressions, not only the outermost ones. Reviewers: jordan_rose CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1340 llvm-svn: 189090
* Remove the CFGElement "Invalid" state.David Blaikie2013-02-231-4/+6
| | | | | | | | | | | | | Use Optional<CFG*> where invalid states were needed previously. In the one case where that's not possible (beginAutomaticObjDtorsInsert) just use a dummy CFGAutomaticObjDtor. Thanks for the help from Jordan Rose & discussion/feedback from Ted Kremenek and Doug Gregor. Post commit code review feedback on r175796 by Ted Kremenek. llvm-svn: 175938
* Replace CFGElement llvm::cast support to be well-defined.David Blaikie2013-02-211-6/+6
| | | | | | See r175462 for another example/more details. llvm-svn: 175796
* Sort all of Clang's files under 'lib', and fix up the broken headersChandler Carruth2012-12-041-3/+3
| | | | | | | | | | | | | uncovered. This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files. I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers. llvm-svn: 169237
* Include pruning and general cleanup.Benjamin Kramer2012-12-011-6/+16
| | | | llvm-svn: 169095
* [analyzer] Teach live variable analyzes that super uses self pointer.Anna Zaks2012-08-141-0/+8
| | | | llvm-svn: 161822
* [analyzer] Variables with destructors are live until the destructor is run.Jordan Rose2012-07-261-0/+6
| | | | | | | Test case in the next commit, which enables destructors under certain circumstances. llvm-svn: 160805
* Bail out the LiveVariables analysis when the CFG is very large, asTed Kremenek2012-07-021-0/+5
| | | | | | | | | we are encountering some scalability issues with memory usage. The appropriate long term fix is to make the analysis more scalable, but this will at least prevent the analyzer swapping when analyzing very large functions. llvm-svn: 159578
* Enhance AnalysisDeclContext::getReferencedBlockVars() to understand ↵Ted Kremenek2011-12-221-4/+5
| | | | | | | | PseudoObjExprs. It turns out that the information collected by this method is a super set of the captured variables in BlockDecl. llvm-svn: 147122
* Fix regression in LiveVariables when reasoning about variables captured by ↵Ted Kremenek2011-12-221-5/+4
| | | | | | blocks. llvm-svn: 147116
* Unweaken vtables as per ↵David Blaikie2011-12-201-0/+2
| | | | | | http://llvm.org/docs/CodingStandards.html#ll_virtual_anch llvm-svn: 146959
* We don't add ExprWithCleanups to the CFG, and getSVal looksJohn McCall2011-11-091-0/+4
| | | | | | | through it, so we should look through it for the live-values analysis as well. llvm-svn: 144190
* Change the AST representation of operations on Objective-CJohn McCall2011-11-061-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | property references to use a new PseudoObjectExpr expression which pairs a syntactic form of the expression with a set of semantic expressions implementing it. This should significantly reduce the complexity required elsewhere in the compiler to deal with these kinds of expressions (e.g. IR generation's special l-value kind, the static analyzer's Message abstraction), at the lower cost of specifically dealing with the odd AST structure of these expressions. It should also greatly simplify efforts to implement similar language features in the future, most notably Managed C++'s properties and indexed properties. Most of the effort here is in dealing with the various clients of the AST. I've gone ahead and simplified the ObjC rewriter's use of properties; other clients, like IR-gen and the static analyzer, have all the old complexity *and* all the new complexity, at least temporarily. Many thanks to Ted for writing and advising on the necessary changes to the static analyzer. I've xfailed a small diagnostics regression in the static analyzer at Ted's request. llvm-svn: 143867
* Tweak LookThroughStmt() in LiveVariables to properly look through ↵Ted Kremenek2011-11-051-4/+9
| | | | | | alternativing ParenExprs and OpaqueValueExprs. Thanks to Anna and Argiris for iterating on this function. My original patch embarssingly didn't even pass the Clang tests. llvm-svn: 143797
* LookThroughStmt GM release.Argyrios Kyrtzidis2011-11-051-2/+2
| | | | llvm-svn: 143796
* LookThroughStmt v4.6.3Argyrios Kyrtzidis2011-11-051-1/+1
| | | | llvm-svn: 143795
* Simplify LookThroughStmt in LiveVariables.cppArgyrios Kyrtzidis2011-11-051-12/+4
| | | | llvm-svn: 143794
* Another correction to the LiveVariables commit (r143767, r143780).Anna Zaks2011-11-051-3/+7
| | | | | | Make test/Analysis/misc-ps.c test pass. llvm-svn: 143790
* Fix infinite loop in LiveVariables due to a misplaced 'break' (it would ↵Argyrios Kyrtzidis2011-11-051-12/+6
| | | | | | | | break out of switch statement, not the while loop). llvm-svn: 143780
* Teach LiveVariables to look through OpaqueValueExprs for extending Stmt ↵Ted Kremenek2011-11-051-10/+28
| | | | | | liveness. llvm-svn: 143767
* Rename AnalysisContext to AnalysisDeclContext. Not only is this name more ↵Ted Kremenek2011-10-241-5/+5
| | | | | | accurate, but it frees up the name AnalysisContext for other uses. llvm-svn: 142782
* Pull TopologicallySortedCFG out of LiveVariables into its own analysis: ↵Ted Kremenek2011-10-221-105/+7
| | | | | | PostOrderCFGView. llvm-svn: 142713
* Remove AnalysisContext::getLiveVariables(), and introduce a templatized ↵Ted Kremenek2011-10-071-0/+2
| | | | | | mechanism to lazily create analyses that are attached to AnalysisContext objects. llvm-svn: 141425
* [static analyzer] Fix crash in LiveVariables and Environment::getSVal() when ↵Ted Kremenek2011-10-061-3/+4
| | | | | | analyzing C++ pointer-to-member calls. Fixes <rdar://problem/10243398>. llvm-svn: 141312
* Fix another major performance regression in LiveVariables by not ↵Ted Kremenek2011-10-021-1/+6
| | | | | | canonicalizing the underlying ImmutableSets on every analyzed statement (just at merges). Fixes <rdar://problem/10087538>. llvm-svn: 140958
* Fix LiveVariables analysis bug with MaterializeTemporaryExpr and fix ↵Ted Kremenek2011-10-021-4/+0
| | | | | | handling in ExprEngine. Fixes <rdar://problem/10201666>. llvm-svn: 140956
* Fix massive LiveVariables regression (due to LiveVariables rewrite) by ↵Ted Kremenek2011-09-161-62/+222
| | | | | | | | | | | | | | | | addressing two performance problems: - Speed of "merge()", which merged data flow facts. This was doing a set canonicalization on every insertion, which was super slow. To fix this, we use ImmutableSetRef. - Visit CFGBlocks in reverse postorder. This is a huge speedup, as on some test cases the algorithm would take many iterations to converge. This contains a bunch of copy-paste from UninitializedValues.cpp and ThreadSafety.cpp. The idea was to get something working first, and then refactor the common logic for all three files into a separate analysis/library entry point. llvm-svn: 139968
* Constify the result of CFGStmt::getStmt().Ted Kremenek2011-08-231-1/+1
| | | | llvm-svn: 138408
* Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer ↵Ted Kremenek2011-08-121-3/+3
| | | | | | and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. llvm-svn: 137537
* [analyzer] Simplify logic for ExprEngine::VisitUnaryExprOrTypeTraitExpr to ↵Ted Kremenek2011-08-061-10/+33
| | | | | | | | avoid recursion to subexpression. This exposed bugs in the live variables analysis, and a latent analyzer bug in the SymbolReaper. llvm-svn: 137006
* Make helper functions static.Benjamin Kramer2011-08-021-2/+3
| | | | llvm-svn: 136679
* [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to ↵Ted Kremenek2011-07-281-307/+401
| | | | | | | | | | | | be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs. The motivation of this large change is to drastically simplify the logic in ExprEngine going forward. Some fallout is that the output of some BugReporterVisitors is not as accurate as before; those will need to be fixed over time. There is also some possible performance regression as RemoveDeadBindings will be called frequently; this can also be improved over time. llvm-svn: 136419
* remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner2011-07-231-1/+1
| | | | | | | | LLVM.h imports them into the clang namespace. llvm-svn: 135852
* [analyzer] PR8962 again. Ban ParenExprs (and friends) from block-level ↵Jordy Rose2011-06-101-13/+3
| | | | | | | | expressions (by calling IgnoreParens before adding expressions to blocks). Undo 132769 (LiveVariables' local IgnoreParens), since it's no longer necessary. Also, have Environment stop looking through NoOp casts; it didn't match the behavior of LiveVariables. And once that's gone, the whole cast block of that switch is unnecessary. llvm-svn: 132840
* [analyzer] Ignore parentheses around block-level expressions when computing ↵Jordy Rose2011-06-091-3/+13
| | | | | | liveness. Fixes the other half of PR8962. llvm-svn: 132769
* Don't report dead stores on unreachable code paths. Fixes ↵Ted Kremenek2011-02-111-4/+8
| | | | | | <rdar://problem/8405222>. llvm-svn: 125415
* Add alternate version of LiveVariables analysis that does not kill liveness ↵Tom Care2010-08-271-6/+8
| | | | | | | | | at assignments. This 'relaxed' liveness is useful in path sensitive analysis for situations where the resulting extended liveness allows us to find some bugs. - Added killAtAssign flag to LiveVariables - Added relaxed LiveVariables to AnalysisContext with an accessor llvm-svn: 112306
* GCC didn't care for my attempt at API compatibility, so brute-force everythingJohn McCall2010-08-251-5/+5
| | | | | | to the new constants. llvm-svn: 112047
* Assignments to reference variables shouldn't kill the variable.Jordy Rose2010-06-041-9/+13
| | | | llvm-svn: 105452
OpenPOWER on IntegriCloud