Ted Kremenek
4531be138c
Add analyzer support for objc_atomicCompareAndSwap()
...
llvm-svn: 68849
2009-04-11 00:54:13 +00:00
Ted Kremenek
df24000d24
Implement analyzer support for OSCompareAndSwap. This required pushing "tagged"
...
ProgramPoints all the way through to GRCoreEngine.
NSString.m now fails with RegionStoreManager because of the void** cast.
Disabling use of region store for that test for now.
llvm-svn: 68845
2009-04-11 00:11:10 +00:00
Ted Kremenek
ffe4ad6795
Move a few more NonLoc static functions to ValueManager.
...
llvm-svn: 68800
2009-04-10 18:11:44 +00:00
Zhongxing Xu
1aced0c9d2
Add prototype for CodeTextRegion.
...
A CodeTextRegion wraps two kinds of data: FunctionDecl* or SymbolRef.
The latter comes from the symbolic function pointer that are generated from
function calls or input data.
llvm-svn: 68777
2009-04-10 08:45:10 +00:00
Zhongxing Xu
dadf250598
Finally nuke loc::SymbolVal.
...
llvm-svn: 68771
2009-04-10 06:06:13 +00:00
Ted Kremenek
5054663daa
Fix: <rdar://problem/6776949> Branch condition evaluates to an uninitialized value (argc is guaranteed to be >= 1)
...
The analyzer now adds the precondition that the first argument of 'main' is > 0.
llvm-svn: 68757
2009-04-10 00:59:50 +00:00
Ted Kremenek
40f4ee74fd
Implement attribute "analyzer_noreturn" (<rdar://problem/6777003>). This allows
...
clients of the analyzer to designate custom assertion routines as "noreturn"
functions from the analyzer's perspective but not the compiler's.
llvm-svn: 68746
2009-04-10 00:01:14 +00:00
Ted Kremenek
f2489ea043
- Move ownership of MemRegionManager into ValueManager.
...
- Pull SVal::GetConjuredSymbol() and friends into ValueManager. This greatly
simplifies the calling interface to clients.
llvm-svn: 68731
2009-04-09 22:22:44 +00:00
Douglas Gregor
bcced4ec31
Propagate the ASTContext to various AST traversal and lookup functions.
...
No functionality change (really).
llvm-svn: 68726
2009-04-09 21:40:53 +00:00
Ted Kremenek
f8cb51c20e
Remove SVal::MakeZero and replace it with ValueManager::makeZeroVal.
...
llvm-svn: 68711
2009-04-09 16:46:55 +00:00
Ted Kremenek
aa4cfc2604
analyzer: Introduce a new class, ValueManager, that serves as an aggregate
...
"manager of symbolic values", wrapping BasicValueFactory, SymbolManager, and
MemRegionManager. While these individual managers nicely separate functionality
in the analyzer, constructing symbolic values can sometimes be cumbersome
because it requires using multiple managers at once. The goal of this class is
to create some factory methods to create SVals that require the use of these
different managers, thus (hopefully) simplifying the analyzer API for clients.
llvm-svn: 68709
2009-04-09 16:13:17 +00:00
Zhongxing Xu
7e9c193398
stop using loc::SymbolVal and clean up code with new API.
...
llvm-svn: 68703
2009-04-09 07:39:46 +00:00
Zhongxing Xu
48abb5d91f
clean up code with new API.
...
llvm-svn: 68701
2009-04-09 07:04:45 +00:00
Zhongxing Xu
783cd82487
clean up code with new API.
...
llvm-svn: 68700
2009-04-09 07:01:16 +00:00
Zhongxing Xu
726876b385
clean up code with new API.
...
llvm-svn: 68699
2009-04-09 06:56:25 +00:00
Zhongxing Xu
2945210d71
clean up code with new API.
...
llvm-svn: 68698
2009-04-09 06:53:24 +00:00
Zhongxing Xu
c48eb32872
stop using loc::SymbolVal.
...
llvm-svn: 68697
2009-04-09 06:49:52 +00:00
Zhongxing Xu
22f72485ed
stop using loc::SymbolVal.
...
llvm-svn: 68696
2009-04-09 06:43:44 +00:00
Zhongxing Xu
0c87a4e79b
stop using loc::SymbolVal.
...
llvm-svn: 68695
2009-04-09 06:41:51 +00:00
Zhongxing Xu
4a8f0cf874
clean up code with new API.
...
llvm-svn: 68694
2009-04-09 06:35:30 +00:00
Zhongxing Xu
b74817f387
clean up code with new API.
...
llvm-svn: 68693
2009-04-09 06:32:20 +00:00
Zhongxing Xu
9410d7ee97
Add a new method because sometimes the type of the conjured symbol is not the
...
type of the expression where we create the symbol.
llvm-svn: 68692
2009-04-09 06:30:17 +00:00
Zhongxing Xu
40934cfa9b
make a conjured symbol as the original code.
...
llvm-svn: 68691
2009-04-09 06:18:05 +00:00
Zhongxing Xu
d3b33ba406
clean up code with new API.
...
llvm-svn: 68687
2009-04-09 06:03:54 +00:00
Ted Kremenek
2f3b0dbff4
Fix a null pointer dereference error due to state caching in a loop involving
...
sending a message to a nil receiver.
llvm-svn: 68686
2009-04-09 06:02:06 +00:00
Zhongxing Xu
cb5d3ced70
Create a symbolic region instead of a loc::SymbolVal. This is a continued step
...
to eliminate the use of loc::SymbolVal.
llvm-svn: 68685
2009-04-09 05:57:11 +00:00
Ted Kremenek
f9f9420303
GRExprEngine: Don't try to reason about the size of 'void' for the return type
...
of messages sent to nil.
llvm-svn: 68683
2009-04-09 05:45:56 +00:00
Ted Kremenek
c3f7c85129
Fix another regression introduced by changes to the analyzer's reasoning about
...
nil receivers in message expressions.
llvm-svn: 68672
2009-04-09 04:06:51 +00:00
Ted Kremenek
d937ed386e
Refactor/cleanup reasoning of nil receivers in message expressions.
...
llvm-svn: 68661
2009-04-09 00:00:02 +00:00
Ted Kremenek
5451c60f5a
Enhance analyzer reasoning about sending messages to nil. A nil receiver returns 0 for scalars of size <= sizeof(void*).
...
llvm-svn: 68629
2009-04-08 18:51:08 +00:00
Ted Kremenek
605fee8445
New static analyzer check by Nikita Zhuk!
...
"The attached patch generates warnings of cases where an ObjC message is sent to
a nil object and the size of return type of that message is larger than the size
of void pointer. This may result in undefined return values as described in PR
2718. The patch also includes test cases."
llvm-svn: 68585
2009-04-08 03:07:17 +00:00
Ted Kremenek
4d947facad
Remove hack from LiveVariables analysis where variables whose address are taken
...
are considered 'live'. This hack isn't needed anymore because we have a
separation in the path-sensitive analyzer between variable names and bindings;
the analyzer can continue to reason about the storage of a variable after its
name is no longer directly referenced. Now the live variables analysis literally means "is this name live".
Along this line, update the dead stores checker to explicitly look for variables
whose values have escaped.
llvm-svn: 68504
2009-04-07 05:25:24 +00:00
Ted Kremenek
aed74642cb
Remove GetLeakNode. This isn't the right approach.
...
llvm-svn: 68502
2009-04-07 05:07:44 +00:00
Ted Kremenek
8928d74e19
Remove period.
...
llvm-svn: 68497
2009-04-07 04:54:31 +00:00
Ted Kremenek
e2f5a9f8e3
Eagerly compute the leak location when a leak occurs at the end of a path.
...
llvm-svn: 68496
2009-04-07 04:54:20 +00:00
Ted Kremenek
3cb8a84924
Removed some commented code.
...
llvm-svn: 68495
2009-04-07 04:53:35 +00:00
Ted Kremenek
86d52c4c02
PathDiagnostic generation: experiment with avoiding generation of control-flow
...
pieces between block entrance and block end unless necessary.
llvm-svn: 68483
2009-04-07 01:34:17 +00:00
Ted Kremenek
6fd0921bdb
retain/release checker: When hunting for the leak location, don't walk the
...
ExplodedGraph backwards. That may inadvertently result in reverse control-flow
edges in the PathDiagostic.
llvm-svn: 68477
2009-04-07 00:12:43 +00:00
Ted Kremenek
d7c1aaa6c5
Don't overguard to adding a control-flow piece when "alwaysAdd" is true.
...
llvm-svn: 68476
2009-04-07 00:11:40 +00:00
Ted Kremenek
c4c9ed0f9b
Rewrite control-flow diagnostic generation "extensive" algorithm using "edge
...
contexts". This allows us to use a stack of contexts to keep track of what control-flow pieces to include when exiting blocks like 'if', 'for', etc.
llvm-svn: 68473
2009-04-06 23:06:54 +00:00
Ted Kremenek
92820d2d3d
PathDiagnosticLocation now also wraps Decls.
...
llvm-svn: 68470
2009-04-06 22:33:35 +00:00
Ted Kremenek
f9201d9799
Sentence-case bug type.
...
llvm-svn: 68406
2009-04-03 21:10:31 +00:00
Ted Kremenek
751e7e3833
retain/release checker: don't track NSPanel until we have better reasoning about
...
the subtle ownership issues of such objects.
llvm-svn: 68397
2009-04-03 19:02:51 +00:00
Zhongxing Xu
ec7e7dfe0a
This is the first step to gradually remove the use of loc::SymbolVal. Now
...
when creating symbolic values, we distinguish between location and non-location
values. For location values, we create a symbolic region instead of a
loc::SymbolVal.
llvm-svn: 68373
2009-04-03 07:33:13 +00:00
Ted Kremenek
6e4c284abe
Sentence-type bug type and category.
...
llvm-svn: 68345
2009-04-02 22:50:16 +00:00
Ted Kremenek
a2a735e7fa
Add another null pointer check. Simplify condition.
...
llvm-svn: 68283
2009-04-02 03:44:00 +00:00
Ted Kremenek
7f905c2f0d
Fix grammar.
...
llvm-svn: 68282
2009-04-02 03:42:38 +00:00
Ted Kremenek
5d6d7d8184
Add null pointer check.
...
llvm-svn: 68281
2009-04-02 03:30:55 +00:00
Ted Kremenek
6c3413c74a
More title-casing of bug type names.
...
llvm-svn: 68275
2009-04-02 02:44:03 +00:00
Ted Kremenek
d7c0872653
Title-case the names of bug types.
...
llvm-svn: 68274
2009-04-02 02:40:45 +00:00