Commit Graph

16 Commits

Author SHA1 Message Date
Ted Kremenek c3a28bdb9d This test case now passes with RegionStore.
llvm-svn: 62802
2009-01-22 22:49:49 +00:00
Daniel Dunbar 34fc92fdc2 Add -analyze action to run static analyzer, instead of inferring from
individual checker options.

llvm-svn: 62634
2009-01-20 23:17:32 +00:00
Ted Kremenek b5670fd555 MemRegion:
- Overhauled the notion of "types" for TypedRegions.  We now distinguish between the "lvalue" of a region (via getLValueRegion()) and the "rvalue" of a region (va getRValueRegion()).  Since a region represents a chunk of memory it has both, but we were conflating these concepts in some cases, leading to some insidious bugs.
- Removed AnonPointeeType, partially because it is unused and because it doesn't have a clear notion of lvalue vs rvalue type.  We can add it back once there is a need for it and we can resolve its role with these concepts.

StoreManager:
- Overhauled StoreManager::CastRegion.  It expects an *lvalue* type for a region.  This is actually what motivated the overhaul to the MemRegion type mechanism.  It also no longer returns an SVal; we can just return a MemRegion*.
- BasicStoreManager::CastRegion now overlays an "AnonTypedRegion" for pointer-pointer casts.  This matches with the MemRegion changes.
- Similar changes to RegionStore, except I've added a bunch of FIXMEs where it wasn't 100% clear where we should use TypedRegion::getRValueRegion() or TypedRegion::getLValueRegion().

AuditCFNumberCreate check:
- Now blasts through AnonTypedRegions that may layer the original memory region, thus checking if the actually memory block is of the appropriate type.  This change was needed to work with the changes to StoreManager::CastRegion.

GRExprEngine::VisitCast:
- Conform to the new interface of StoreManager::CastRegion.

Tests:
- None of the analysis tests fail now for using the "basic store".
- Disabled the tests 'array-struct.c' and 'rdar-6442306-1.m' pending further testing and bug fixing.

llvm-svn: 60995
2008-12-13 21:49:13 +00:00
Ted Kremenek 1c89be0216 Temporarily XFAIL these tests.
llvm-svn: 60991
2008-12-13 19:27:01 +00:00
Anders Carlsson aaa183e944 include alloca.h instead of malloc.h. If this doesn't work for everyone we can just declare alloca directly in the file.
llvm-svn: 58853
2008-11-07 15:41:33 +00:00
Argyrios Kyrtzidis c118934d12 Bring in 'alloca' for the Analysis/stack-addr-ps.c test case.
llvm-svn: 58849
2008-11-07 14:00:25 +00:00
Ted Kremenek f3d9f805c7 Add 'alloca' test case for return-of-stack-address checker.
llvm-svn: 58554
2008-11-02 00:37:31 +00:00
Ted Kremenek d119c0bd24 Added missing 'expected-warning'
llvm-svn: 58481
2008-10-31 00:20:13 +00:00
Ted Kremenek 20cf431bce Enhance compound literal test case.
llvm-svn: 58480
2008-10-31 00:19:42 +00:00
Ted Kremenek 3d71fe1503 Add missing "expected warning".
Add compound literal with empty initializer (just to test the analyzer handles it).

llvm-svn: 58470
2008-10-30 23:17:05 +00:00
Ted Kremenek b7d13803ce Improve compound literal test case.
llvm-svn: 58447
2008-10-30 18:46:50 +00:00
Ted Kremenek 03ce9eeee2 Add 'expected-warning' for braces around scalar initializer
llvm-svn: 58280
2008-10-27 22:00:16 +00:00
Ted Kremenek c1739912c8 Added compound literal test case.
llvm-svn: 58279
2008-10-27 21:57:17 +00:00
Ted Kremenek a7045d663d Enhanced path-sensitive return-of-stack-address check to print out the name of the variable whose address was returned.
llvm-svn: 54253
2008-07-31 20:31:27 +00:00
Ted Kremenek 4a78c3ae11 Refactored all logic to run the GRSimpleVals and CFRef checker into a common
code path in the clang driver.

Renamed options --grsimple to -checker-simple and -check-cfref to -checker-cfref.

llvm-svn: 49500
2008-04-10 22:16:52 +00:00
Ted Kremenek f646774f32 Added path-sensitive check for return statements that return the address
of a stack variable.  This is the path-sensitive version of a check that
is already done during semantic analysis.

llvm-svn: 48980
2008-03-31 15:02:58 +00:00