aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis
AgeCommit message (Collapse)Author
2009-10-31Update CMake file.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85652 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Move CheckDivZero into its own files.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85651 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Move UndefDerefChecker into its own file.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85645 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31fix 80-col.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85642 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Tighten computation of ExprVal using ?: expression. No functionality change.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85618 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Make checkers run in deterministic order.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85597 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Move NullDerefChecker.h instead a 'Checkers' subdirectory.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85596 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Move all logic for the null dereference checker from ↵Ted Kremenek
GRExprEngineInternalChecks.cpp to a separate .cpp file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85595 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Fix PR5316: make assignment expressions can be visited as lvalue. Then we Zhongxing Xu
can get the correct base lvalue. Revert r85578. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85579 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Handle loading of field values from LazyCompoundVals in ↵Ted Kremenek
GRExprEngine::VisitMemberExpr(). This fixes the crash reported in PR 5316. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85578 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29Add an assertion to ensure NullDerefChecker exists.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85497 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29Fix accidental use of CheckSVal instead of CheckLocation, and add aTed Kremenek
small test case to show we handle dereferences of undefined values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85492 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29Fix an insidious bug in RegionStore::RemoveDeadBindings() pointed outTed Kremenek
by Zhongxing Xu. RemoveDeadBindings() would falsely prune SymbolicRegions from the store that wrapped derived symbols whose liveness could only be determined after scanning the store. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85484 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29Move NullDeref and UndefDeref into their own checker. Zhongxing Xu
Add a CheckLocation() interface to Checker. Now ImplicitNullDeref nodes are cached in NullDerefChecker. More cleanups follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85471 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29[llvm up]Douglas Gregor
Switch a few ugly switch-on-string-literal constructs to use the new llvm::StringSwitch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85461 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Unused ivars checker: also check methods in categories that are defined in ↵Ted Kremenek
the same translation unit. Fixes <rdar://problem/6260004>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85442 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Pull ivar scanning logic into another utility function. This refactoring ↵Ted Kremenek
will enable scanning categories as well (WIP). No functionality change yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85423 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28make CallGraph more flexible by letting it accept ASTContext instead of ASTUnit.Zhongxing Xu
Patch by Simone Pellegrini. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85386 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26'error' is usually used as a noreturn function. This can suppress some falseZhongxing Xu
warnings. Eventually we need a way to import externally defined functions summaries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85092 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Eliminate QualifiedDeclRefExpr, which captured the notion of aDouglas Gregor
qualified reference to a declaration that is not a non-static data member or non-static member function, e.g., namespace N { int i; } int j = N::i; Instead, extend DeclRefExpr to optionally store the qualifier. Most clients won't see or care about the difference (since QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the number of top-level expression types that clients need to cope with, brings the implementation of DeclRefExpr into line with MemberExpr, and simplifies and unifies our handling of declaration references. Extended DeclRefExpr to (optionally) store explicitly-specified template arguments. This occurs when naming a declaration via a template-id (which will be stored in a TemplateIdRefExpr) that, following template argument deduction and (possibly) overload resolution, is replaced with a DeclRefExpr that refers to a template specialization but maintains the template arguments as written. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84962 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Rename: CheckBadDiv->CheckDivZero.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84824 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-21Simplify some code. No functionality change.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84757 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20Remove stale comment and tighten code.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84697 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20Use llvm::OwningPtr in CFGBuilder, fixing a leak on an error path.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84695 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20Add destructor and cleanup code to LocationContext (fixing some leaks). ↵Ted Kremenek
Along the way, have AnalysisManager periodically cleanup its AnalysisContextManager and LocationContextManager objects, as they don't need to forever retain all the CFGs ever created when analyzing a file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84684 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20RegionStore: Use the *default* binding (instead of the *direct* binding) of ↵Ted Kremenek
an Objective-C object region when doing lazy value retrieval of an ivar. This fixes: <rdar://problem/7312221> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84584 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20retain/release checker: allow 'new', 'copy', 'alloc', 'init' prefix to start ↵Ted Kremenek
before '_' when determining Cocoa fundamental rule. Fixes: <rdar://problem/7265711> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84569 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18PR5218: Replace IdentifierInfo::getName with StringRef version, now that clientsDaniel Dunbar
are updated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84447 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18Move misc clients to IdentifierInfo StringRef API.Daniel Dunbar
- strcmp -> == - OS.write(II->getName() ...) -> OS << II->getNameStr() - Avoid std::string concatenation - Use getNameStr().str() when an std::string is really needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84437 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18Move clients to use IdentifierInfo::getNameStart() instead of getName()Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84436 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18use DenseSet instead of SmallSet.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84398 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Simplify more.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84342 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Simplify.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84341 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Use raw_ostream instead of C stdio.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84340 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Simplify.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84338 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Minor cleanup: move typedef out of anonymous namespace (which now contains ↵Ted Kremenek
nothing) and into RemoveDeadBindings. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84335 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Per discussion with Ted, the 'FromSuper'/'FromSub' logic is invalid. SimplifyZhongxing Xu
the code to standard worklist algorithm. Always add both sub and super regions of live regions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84323 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Fix another static analyzer crash due to a corner case in "folding" symbolic ↵Ted Kremenek
values that are constrained to be a constant. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84320 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Actually all regions whose super region is not MemSpaceRegion are of these 3Zhongxing Xu
kinds. This means we are visiting all regions 'from super region'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84319 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Fix static analyzer crash due to recently add symbolic-value constant ↵Ted Kremenek
folding. The issue was falsely converting the constant value of the LHS of a '<<'/'>>' operation to the same APSInt value of the RHS. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84269 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16retain/release checker: Stop tracking reference counts for any symbols ↵Ted Kremenek
touched by StoreManager::InvalidateRegion(). This fixes <rdar://problem/7257223> and <rdar://problem/7283470>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84223 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Educate the retain/release checker about [NSCursor dragCopyCursor].Ted Kremenek
This fixes <rdar://problem/7306898> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84213 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15retain/release checker: Use simpler utility method for creating class method ↵Ted Kremenek
summaries. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84210 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Per an astute observation from Zhongxing Xu, remove a "special case" logic inTed Kremenek
RegionStoreManager::Retrieve() that was intended to handle conflated uses of pointers as integers. It turns out this isn't needed, and resulted in inconsistent behavior when creating symbolic values on the following test case in 'tests/Analysis/misc-ps.m': typedef struct _BStruct { void *grue; } BStruct; void testB_aux(void *ptr); void testB(BStruct *b) { { int *__gruep__ = ((int *)&((b)->grue)); int __gruev__ = *__gruep__; testB_aux(__gruep__); } { int *__gruep__ = ((int *)&((b)->grue)); int __gruev__ = *__gruep__; if (~0 != __gruev__) {} } } When the code was analyzed with '-arch x86_64', the value assigned to '__gruev__' be would be a symbolic integer, but for '-arch i386' the value assigned to '__gruev__' would be a symbolic region (a blob of memory). With this change the value created is always a symbolic integer. Since the code being removed was added to support analysis of code calling OSAtomicCompareAndSwapXXX(), I also modified 'test/Analysis/NSString.m' to analyze the code in both '-arch i386' and '-arch x86_64', and also added some complementary test cases to test the presence of leaks when using OSAtomicCompareAndSwap32Barrier()/OSAtomicCompareAndSwap64Barrier() instead of just their absence. This code change reveals that previously both RegionStore and BasicStore were handling these cases wrong, and would never cause the analyzer to emit a leak in these cases (false negatives). Now RegionStore gets it right, but BasicStore still gets it wrong (and hence it has been disabled temporarily for this test case). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84163 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Remove stale comment.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84157 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Now StoreManager::CastRegion() takes a MemRegion, returns a MemRegion.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84081 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Remove dead code.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84073 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14* Remove unused GRState* parameterZhongxing Xu
* Make all Base value the last argument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84071 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14retain/release checker: Recognize that calls toTed Kremenek
'CVPixelBufferCreateWithPlanarBytes()' and 'CVPixelBufferCreateWithBytes' (Core Video API) can indirectly release a pixel buffer object via a callback. This fixes <rdar://problem/7283567>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84064 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13retain/release checker: retained objects passed to pthread_create (asTed Kremenek
the data argument) should not be tracked further until we support full IPA. (fixes <rdar://problem/7299394>) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84047 91177308-0d34-0410-b5e6-96231b3b80d8