aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer/Core
AgeCommit message (Collapse)Author
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
2011-07-25Rename getInstantiationColumnNumber to getExpansionColumnNumber in bothChandler Carruth
SourceManager and FullSourceLoc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135965 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Rename getDecomposedInstantiationLoc to getDecomposedExpansionLoc.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135962 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Mechanically rename SourceManager::getInstantiationLoc andChandler Carruth
FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part of the API and documentation update from 'instantiation' as the term for macros to 'expansion'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135914 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-23remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner
LLVM.h imports them into the clang namespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-22In Objective-C, pull arbitrary attributes from overriddenJohn McCall
methods, including indirectly overridden methods like those declared in protocols and categories. There are mismatches that we would like to diagnose but aren't yet, but this is fine for now. I looked at approaches that avoided doing this lookup unless we needed it, but the infer-related-result-type checks were doing it anyway, so I left it with the same fast-path check for no previous declartions of that selector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135743 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-21Move AnalysisManager constructor out of line. No functionality change (yet).Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135667 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-21Simplify passing of CFGBuildOptions around for AnalysisContext. No ↵Ted Kremenek
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135666 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-16[analyzer] Place checking for Core Foundation "Create" rule into a proper ↵Ted Kremenek
API. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135349 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-15Add tests for CFRefReport's path notes, and fix a few typos and non-standard ↵Jordy Rose
terminology ('+0 retain counts') caught by the tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135310 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-15[analyzer] GNU __null is a pointer-sized integer, not a pointer. Fixes PR10372.Jordy Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135294 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-15Create a new expression node, SubstNonTypeTemplateParmExpr,John McCall
to represent a fully-substituted non-type template parameter. This should improve source fidelity, as well as being generically useful for diagnostics and such. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135243 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07In ARC, reclaim all return values of retainable type, not just thoseJohn McCall
where we have an immediate need of a retained value. As an exception, don't do this when the call is made as the immediate operand of a __bridge retain. This is more in the way of a workaround than an actual guarantee, so it's acceptable to be brittle here. rdar://problem/9504800 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134605 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06Teach the static analyzer's interpretation of Cocoa conventions toDouglas Gregor
obey the objc_method_family attribute when provided. Fixes <rdar://problem/9726279>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134493 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-27[analyzer] Use UnknownVal when default-initializing arrays whose element ↵Jordy Rose
types we don't model, to distinguish them from uninitialized arrays (PR10163). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133937 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21Introduce a new AST node describing reference binding to temporaries.Douglas Gregor
MaterializeTemporaryExpr captures a reference binding to a temporary value, making explicit that the temporary value (a prvalue) needs to be materialized into memory so that its address can be used. The intended AST invariant here is that a reference will always bind to a glvalue, and MaterializeTemporaryExpr will be used to convert prvalues into glvalues for that binding to happen. For example, given const int& r = 1.0; The initializer of "r" will be a MaterializeTemporaryExpr whose subexpression is an implicit conversion from the double literal "1.0" to an integer value. IR generation benefits most from this new node, since it was previously guessing (badly) when to materialize temporaries for the purposes of reference binding. There are likely more refactoring and cleanups we could perform there, but the introduction of MaterializeTemporaryExpr fixes PR9565, a case where IR generation would effectively bind a const reference directly to a bitfield in a struct. Addresses <rdar://problem/9552231>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133521 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-17Initialize a couple of variables to shut GCC up.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133246 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-15Automatic Reference Counting.John McCall
Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-15[analyzer] When performing a binary operation on symbolic operands, we ↵Jordy Rose
convert the symbol values to a common type. But in a relational operation, the result is an 'int' or 'bool', which may not be the appropriate type to convert the operands to. In these cases, use the left-hand operand's type as the conversion type. There's no associated test for this because fully-constrained symbolic values are evaluated ahead of time in normal expressions. This can only come up in checker-constructed expressions (like the ones in an upcoming patch to CStringChecker). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133041 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-10[analyzer] PR8962 again. Ban ParenExprs (and friends) from block-level ↵Jordy Rose
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132840 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-08[analyzer] Look through __extension__ expressions in a GRState's ↵Jordy Rose
Environment. Fixes PR8962. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132762 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-04Add support for builtin astype:Tanya Lattner
__builtin_astype(): Used to reinterpreted as another data type of the same size using for both scalar and vector data types. Added test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132612 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-26Tighen analyzer diagnostics w.r.t ObjC/CF leaks.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132130 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-25static analyzer: when conservatively evaluating functions, don't invalidate ↵Ted Kremenek
the values of globals when the called function is strlen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132100 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-25Teach analyzer about cf_returns_not_retained for C functions.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132049 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-25Enhance retain/release checker to flag warnings when functions returning CG ↵Ted Kremenek
types do not follow the Core Foundation naming conventions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132048 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-21A few more is(Un)signedIntegerType/is(Un)signedOrEnumerationType cleanups.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131793 91177308-0d34-0410-b5e6-96231b3b80d8