aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer/Core
AgeCommit message (Collapse)Author
2011-08-19Fix a memory leak in the analyzer - BugReports didn't get freed. Plus, ↵Anna Zaks
remove invalid assert from the destructor which wasn't called previously due to the leak. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138027 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-18Static Analyzer Diagnostics: Move custom diagnostic visitors from ↵Anna Zaks
BugReporterContext to BugReport. One API change: I added BugReporter as an additional parameter to the BugReporterVisitor::VisitNode() method to allow visitors register other visitors with the report on the fly (while processing a node). This functionality is used by NilReceiverVisitor, which registers TrackNullOrUndefValue when the receiver is null. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138001 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17Remove DiagBugReport by pulling it into its parent BugReport.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137899 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17Remove EnhancedBugReport and RangedBugReport - pull all the extra ↵Anna Zaks
functionality they provided into their parent BugReport. The only functional changes are: made getRanges() non const - it adds default range to Ranges if none are supplied, made getStmt() private, which was another FIXME. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137894 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17[analyzer] Migrate assumption and binding handling from CFRefCount to ↵Jordy Rose
RetainReleaseChecker. This is mostly a textual move and required no supporting changes. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137874 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17Fix a handful of dead stores found by Clang's static analyzer. There's a ↵Ted Kremenek
bunch of others I haven't touched. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137867 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16[analyzer] teach ExprEngine about loads from static C++ class fields. Fixes ↵Ted Kremenek
<rdar://problem/9948787>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137760 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16[analyzer] Overhaul of checker registration in preparation for basic plugin ↵Jordy Rose
support. Removes support for checker groups (we can add them back in later if we decide they are still useful), and -analyzer-checker-help output is a little worse for the time being (no packages). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137758 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16[analyzer] Enhance ConditionVisitor to handle arbitrary ValueDecls in binary ↵Ted Kremenek
expressions, and also handle inverting the order of comparison when the named decl appears on the RHS. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137714 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16[analyzer] fix operation inversion calculation in ConditionVisitor.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137708 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16[analyzer] Enhance ConditionVisitor to understand eagerly evaluated (simple) ↵Ted Kremenek
binary conditions, and teach it to only focus on constraint changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137705 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16[analyzer] add ExprEngine::getEagerlyAssumedTags() to allow externally ↵Ted Kremenek
querying of "eagerly assumed" expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137704 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-16[analyzer] Remove PostStmtCustom ProgramPoint. It can be represented using ↵Ted Kremenek
tagged PostStmts. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137697 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-15Add ProgramState.cpp.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137677 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-15Rename GRState to ProgramState, and cleanup some code formatting along the way.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137665 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer ↵Ted Kremenek
and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137537 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12[analyzer] change "tag" in ProgramPoint from "void*" to a ProgramPointTag*.Ted Kremenek
Having a notion of an actual ProgramPointTag will aid in introspection of the analyzer's behavior. For example, the GraphViz output of the analyzer will pretty-print the tags in a useful manner. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137529 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12[analyzer] Introduce new MemRegion, "TypedValueRegion", so that we can ↵Ted Kremenek
separate TypedRegions that implement getValueType() from those that don't. Patch by Olaf Krzikalla! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137498 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12Optimizations for Dependent Symbol tracking (as per Ted's code review for ↵Anna Zaks
r137309): 1) Change SymbolDependTy map to keep pointers as data. And other small tweaks like making the DenseMap smaller 64->16 elements; remove removeSymbolDependencies() as it will probably not be used. 2) Do not mark dependents live more then once. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137401 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-11Analyzer Core: Adding support for user-defined symbol dependencies. (For ↵Anna Zaks
example, the allocated resource symbol only needs to be freed if no error has been returned by the allocator, so a checker might want to make the lifespan of the error code symbol depend on the allocated resource symbol.) Note, by default, the map that holds the dependencies will get destroyed along with the SymbolManager at the end of function exploration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137309 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-11Cleanup: remove CleanedSate member and GetState() wrapper from ↵Anna Zaks
StmtNodeBuilder, not needed as of r137273. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137284 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-10Cleanup: remove GetState() wrapper from ExprEngine, not needed as of r137273.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137279 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-10Analyzer Core: In checkDeadSymbols checker callback, provide the state in ↵Anna Zaks
which the symbols are not yet deleted so that checkers could inspect them. Since we are now always creating a transition in ProcessStmt(), remove the logic for adding a transition when none was generated. TODO: the extra transitions will have to be removed; more cleanups; a checker that tests teh new fucntionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137273 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-06[analyzer] Start sketching out a new BugReporterVisitor that inspects ↵Ted Kremenek
branches and other expressions to generate interesting path events in diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137012 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-06[analyzer] Simplify logic for ExprEngine::VisitUnaryExprOrTypeTraitExpr to ↵Ted Kremenek
avoid recursion to subexpression. This exposed bugs in the live variables analysis, and a latent analyzer bug in the SymbolReaper. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137006 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-06[analyzer] Change SymbolReaper to store region roots implied by the ↵Ted Kremenek
Environment, allowing it be queried when determining if symbols derived from regions are still live. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137005 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-03Static Analyzer diagnostics visualization: when the last location on a path ↵Anna Zaks
is end of the function, the arrow should point to the closing brace, not the statement before it. Patch by Ted Kremenek. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136761 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-02[analyzer] Drastically simplify ExprEngine::VisitInitListExpr() by assuming ↵Ted Kremenek
all initializer expressions have already been evaluated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136706 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-31Remove dead code flagged by GCC's -Wunused-but-set-variable.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136581 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ExprEngine::VisitDeclStmt because ↵Ted Kremenek
it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136522 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ↵Ted Kremenek
ExprEngine::VisitCompoundLiteralExpr because it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136521 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ExprEngine::VisitCastExpr because ↵Ted Kremenek
it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136520 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ↵Ted Kremenek
ExprEngine::VisitObjCForCollectionStmt because it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136519 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove explicit argument processing from ↵Ted Kremenek
ExprEngine::VisitObjCMessage() since it is no longer needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136518 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ↵Ted Kremenek
ExprEngine::VisitLValObjCIvarRefExpr because it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136517 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] tighten up ExprEngine::VisitObjCAtSynchronizationStmt().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136516 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ↵Ted Kremenek
ExprEngine::VisitObjCPropertyRefExpr because it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136515 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ExprEngine::VisitCallExpr because ↵Ted Kremenek
it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136514 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ExprEngine::VisitMemberExpr ↵Ted Kremenek
because it isn't needed anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136513 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29[analyzer] Remove recursive visitation in ↵Ted Kremenek
ExprEngine::VisitLvalArraySubscriptExpr() because it is no longer needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136512 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-29Remove an unused function (found by Clang's -Wunused-function)Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136434 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28Really remove FlatStoreManager and BasicStoreManager, this time from the ↵Ted Kremenek
driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136422 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28Remove FlatStoreManager and BasicStoreManager. The latter has long been ↵Ted Kremenek
obsolete and the former has no had development in a long time. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136420 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28[analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to ↵Ted Kremenek
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136419 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28[analyzer] Add StoreManager::includedInBindings() to to query whether a ↵Ted Kremenek
region is used in any bindings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136416 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28[analyzer] Add safety checking in RegionStoreManager for string literal ↵Ted Kremenek
underruns. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136415 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28[analyzer] Teach Environment to not look through MaterializeTemporaryExprs.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136414 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28[analyzer] Fix bug in ObjCMessage where casts were being incorrectly ignored.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136413 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28[analyzer] fix handling of MaterializeTemporaryExpr by binding the result ↵Ted Kremenek
value to the proper expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136412 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Rename getInstantiationLineNumber to getExpansionLineNumber in bothChandler Carruth
SourceManager and FullSourceLoc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135969 91177308-0d34-0410-b5e6-96231b3b80d8