3355 Commits

Author SHA1 Message Date
NAKAMURA Takumi
f9cbcc4cc2 Fix whitespace.
llvm-svn: 124364
2011-01-27 07:10:08 +00:00
NAKAMURA Takumi
7c2888689d 7bit-ize.
llvm-svn: 124363
2011-01-27 07:09:49 +00:00
Ted Kremenek
0e89838ced Hook up attribute ns_consumes_self in the ObjC retain/release checker in the static analyzer.
llvm-svn: 124360
2011-01-27 06:54:14 +00:00
Argyrios Kyrtzidis
c7ffd35cb7 [analyzer] Enable the self-init checker under command-line option '-analyzer-check-objc-self-init' which by default
is enabled by the driver for '--analyze'.

llvm-svn: 124266
2011-01-26 01:26:50 +00:00
Argyrios Kyrtzidis
8781b7dded [analyzer] Improve the diagnostic for the self-init checker. Suggestion by Ted!
llvm-svn: 124263
2011-01-26 01:26:41 +00:00
Argyrios Kyrtzidis
3ae681eb12 [analyzer] Do the self-init check only on NSObject subclasses. Patch by Jean-Daniel Dupas!
llvm-svn: 124249
2011-01-25 23:54:44 +00:00
Ted Kremenek
fedad3c668 Don't try and symbolicate unions; we don't reason
about them yet.  Fixes crash reported in PR 9049.

llvm-svn: 124228
2011-01-25 21:08:47 +00:00
Ted Kremenek
ade45d9703 Recycle memory for GRStates that are never referenced
by ExplodedNodes.  This leads to about a 4-8%
reduction in memory footprint when analyzing
functions in sqlite3.

llvm-svn: 124214
2011-01-25 19:13:54 +00:00
Ted Kremenek
7fd987de23 Tweak wording of static analyzer diagnostic
for a block capturing the value of an uninitialized
variable.

llvm-svn: 124212
2011-01-25 19:13:42 +00:00
Argyrios Kyrtzidis
ffb08c46fa [analyzer] Handle the dot syntax for properties in the ExprEngine.
We translate property accesses to obj-c messages by simulating "loads" or "stores" to properties
using a pseudo-location SVal kind (ObjCPropRef).

Checkers can now reason about obj-c messages for both explicit message expressions and implicit
messages due to property accesses.

llvm-svn: 124161
2011-01-25 00:04:03 +00:00
Argyrios Kyrtzidis
fdbcd54658 [analyzer] Introduce ExprEngine::VisitObjCMessage for handling general ObjCMessages (both message expressions and property access)
and use it in ExprEngine::VisitObjCMessageExpr.

llvm-svn: 124160
2011-01-25 00:03:57 +00:00
Argyrios Kyrtzidis
37ab726d63 [analyzer] Introduce ObjCMessage which represents both explicit ObjC message expressions and implicit
messages that are sent for handling properties in dot syntax.

Replace all direct uses of ObjCMessageExpr in the checkers and checker interface with ObjCMessage.

llvm-svn: 124159
2011-01-25 00:03:53 +00:00
Argyrios Kyrtzidis
8e169a5f18 [analyzer] Simplify GetReceiverType function in BasicObjCFoundationChecks.cpp; no functionality change.
llvm-svn: 124157
2011-01-25 00:03:45 +00:00
Ken Dyck
c28614cec4 Use CharUnits for the offset amount of RegionRawOffset.
llvm-svn: 124093
2011-01-24 01:55:39 +00:00
Ted Kremenek
a1ec4f39f4 Enhance AnalysisConsumer to also visit functions
and methods defined within 'namespace X { ... }'.

llvm-svn: 123921
2011-01-20 17:09:48 +00:00
John McCall
424cec97bd Change QualType::getTypePtr() to return a const pointer, then change a
thousand other things which were (generally inadvertantly) relying on that.

llvm-svn: 123814
2011-01-19 06:33:43 +00:00
Jeffrey Yasskin
8dfa5f1776 Fix warnings found by gcc-4.6, from -Wunused-but-set-variable and
-Wint-to-pointer-cast.

llvm-svn: 123719
2011-01-18 02:00:16 +00:00
Douglas Gregor
45e84b0053 NetBSD, OpenBSD, and Dragonfly BSD also have arc4random. Patch from
Joerg Sonnenberger!

llvm-svn: 123669
2011-01-17 19:16:24 +00:00
Douglas Gregor
cdbc539aee Introduce a new expression kind, SubstNonTypeTemplateParmPackExpr,
that captures the substitution of a non-type template argument pack
for a non-type template parameter pack within a pack expansion that
cannot be fully expanded. This follows the approach taken by
SubstTemplateTypeParmPackType.

llvm-svn: 123506
2011-01-15 01:15:58 +00:00
Ted Kremenek
8cb349de80 Cleanup confused code that redundantly called "getDeclContext()" twice.
Found by clang static analyzer.

llvm-svn: 123485
2011-01-14 22:31:41 +00:00
Ted Kremenek
44e2c5cdd9 Rename 'RemoveDeadBindings()' to 'removeDeadBindings()'
llvm-svn: 123460
2011-01-14 20:34:15 +00:00
Ted Kremenek
7c211625e0 Rename 'EnterStackFrame()' to 'enterStackFrame()'.
llvm-svn: 123459
2011-01-14 20:34:10 +00:00
Ted Kremenek
95d874fa5d Teach RegionStore::EnterStackFrame() to handle
the case where the called function has fewer
formal arguments than actual arguments.  This
fixes a crash in the analyzer when doing
function call inlining.

Patch by Zhenbo Xu!

llvm-svn: 123458
2011-01-14 20:29:43 +00:00
Ted Kremenek
c7ed09378e Rename 'CheckDeadStores.cpp' to 'DeadStoresChecker.cpp'.
llvm-svn: 123395
2011-01-13 20:58:59 +00:00
Ted Kremenek
f224820b45 Remove warning in dead stores checker for
dead stores within nested assignments.  I have
never seen an actual bug found by this specific
warning, and it can lead to many false positives.

llvm-svn: 123394
2011-01-13 20:58:56 +00:00
Zhongxing Xu
3a3c0fd2d1 CXXBaseObjectRegion is like FieldRegion. Need to blast through it when
getting the base region. This makes the RemoveDeadBindings() correct.

llvm-svn: 123375
2011-01-13 12:46:31 +00:00
Zhongxing Xu
0d87e0c65b Support inlining base initializers. We still haven't got it completely right,
since the bindings are purged after they are set up. Need to investigate
RemoveDeadBindings algorithm.

llvm-svn: 123374
2011-01-13 12:30:12 +00:00
Ted Kremenek
304b6e4aa1 Fix a corner case in RegionStore where we assign
a struct value to a symbolic index into array.
RegionStore can't actually reason about this,
so we were getting bogus warnings about loading
uninitialized values from the array.  The solution
is invalidate the entire array when we cannot
represent the binding explicitly.

Fixes <rdar://problem/8848957>

llvm-svn: 123368
2011-01-13 06:58:15 +00:00
Ted Kremenek
f41bdd7c24 Rename 'HasGeneratedNode' to 'hasGeneratedNode'
and 'getBasePredecessor()' to 'getPredecessor()'.

Also remove a unneeded save-and-restore of
node builder's tag field.

llvm-svn: 123363
2011-01-13 04:36:46 +00:00
Ted Kremenek
b86ec25256 Remove unnecessary save-and-restore of the
node builder's 'HasGeneratedNode' field.

llvm-svn: 123362
2011-01-13 04:36:40 +00:00
Ted Kremenek
f044bd68e1 Remove CheckerContext's dependence on setting
the node builder's "tag" ivar (which we would
like to remove).

llvm-svn: 123361
2011-01-13 04:36:36 +00:00
Zhongxing Xu
ebbeb79234 Add some documentation for C++ static analyzer.
llvm-svn: 123313
2011-01-12 07:20:03 +00:00
Argyrios Kyrtzidis
4b7433fab2 [analyzer] Introduce ObjCSelfInitChecker, which checks initialization methods to verify that they assign 'self' to the
result of an initialization call (e.g. [super init], or [self initWith..]) before using any instance variable or
returning 'self'.

llvm-svn: 123264
2011-01-11 19:45:25 +00:00
Argyrios Kyrtzidis
9c23e6c689 [analyzer] Support post-visiting ObjCIvarRefExprs for checkers.
llvm-svn: 123263
2011-01-11 19:45:20 +00:00
Argyrios Kyrtzidis
1790c975e7 [analyzer] Add 'isLoad' parameter in Checker::visitLocation() to conveniently distinguish between loads/stores.
llvm-svn: 123261
2011-01-11 19:45:13 +00:00
Ted Kremenek
841df11dab Remove ProgramPoint parameter from GenericNodeBuilder::generateNode().
llvm-svn: 123240
2011-01-11 16:53:44 +00:00
Francois Pichet
9b76fa9b07 Rename GenericNodeBuilder to GenericNodeBuilderRefCount to avoid namespace clash using MSVC.
llvm-svn: 123228
2011-01-11 10:41:37 +00:00
Ted Kremenek
a00bccc0c5 Rework ExprEngine::processCFGBlockEntrance()
to use a node builder.  This paves the way
for Checkers to interpose (via a "visit" method)
at the entrance to blocks.

llvm-svn: 123217
2011-01-11 06:37:47 +00:00
Ted Kremenek
f82068a994 Remove several silly methods from ento::CoreEngine
that just forwarded to ento::SubEngine.

llvm-svn: 123216
2011-01-11 04:49:40 +00:00
Ted Kremenek
f4ef3d3ca1 Rename misc. methods in ento::Worklist to start
with lowercase letter.

llvm-svn: 123212
2011-01-11 02:34:50 +00:00
Ted Kremenek
926c96211e Rename misc. methods in GRSubEngine to start
with a lower-case letter.  No functionality change.

llvm-svn: 123211
2011-01-11 02:34:45 +00:00
Michael J. Spencer
e503f89b4b Replace all uses of PathV1::isDirectory with PathV2::fs::is_directory.
llvm-svn: 123208
2011-01-11 01:21:20 +00:00
Zhongxing Xu
fb060c9014 Fix CMakeLists.txt.
llvm-svn: 123167
2011-01-10 09:33:41 +00:00
Zhongxing Xu
40c9d8a4c5 Revert r123160. There are linking dependency problems.
llvm-svn: 123166
2011-01-10 09:23:01 +00:00
Douglas Gregor
eff85ad41b Unbreak the CMake build.
llvm-svn: 123162
2011-01-10 07:26:53 +00:00
Zhongxing Xu
7d4ab7d915 ExprEngine.cpp and AnalysisConsumer.cpp should not be in the Checkers directory.
llvm-svn: 123160
2011-01-10 05:52:42 +00:00
Zhongxing Xu
5609e21337 In C++, assignment and compound assignment operators return an lvalue.
llvm-svn: 123158
2011-01-10 03:54:19 +00:00
Zhongxing Xu
0710f5c5e1 The isPrefix() checking is redundant. Lvalue incremental/decremental expressions
are all prefixes.

llvm-svn: 123156
2011-01-10 03:22:57 +00:00
Alexis Hunt
1d7926502f Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,
more accurate, and makes it make sense for it to hold a delegating constructor
call.

llvm-svn: 123084
2011-01-08 20:30:50 +00:00
Douglas Gregor
35c7e84eb7 There is nothing interesting to analyze with a sizeof...(pack) expression
llvm-svn: 122818
2011-01-04 18:46:34 +00:00