24 Commits

Author SHA1 Message Date
Ted Kremenek
9fd2531b5e Fixed transfer function for casts to always evaluate the effects of the
cast's subexpression even if the cast itself has no effect.

llvm-svn: 47335
2008-02-19 18:52:54 +00:00
Ted Kremenek
fe0b5740ce Added transfer function support for casting to "void".
llvm-svn: 47333
2008-02-19 18:47:04 +00:00
Ted Kremenek
8b51dc2754 Added back explicit state/node creation when visiting IntegerLiterals and
CharacterLiterals.  This may not be a permanent solution; it doesn't cost that
much, however, to create a few additional states, and solves a whole bunch
of edge cases when handling ?, ||, and &&.

llvm-svn: 47299
2008-02-19 02:01:16 +00:00
Ted Kremenek
e0188e6ad7 Added boilerplate transfer function support for CallExprs.
llvm-svn: 47298
2008-02-19 01:44:53 +00:00
Ted Kremenek
58cc30b64b Added FIXME for properly handling local arrays using symbolic LValues.
For now we just treat their values as "Unknown."

llvm-svn: 47294
2008-02-19 00:29:51 +00:00
Ted Kremenek
0f7130adc4 --grsimple now reports the number of nodes in the ExplodedGraph for
an analyzed function.

GRExprEngine now records stores to "uninitialized lvalues" (which are sinks in
the ExplodedGraph).

llvm-svn: 47293
2008-02-19 00:22:37 +00:00
Ted Kremenek
346169fa3d Added more assertions and checks in transfer function logic to check for
UninitializedVals and UnknownVals.

llvm-svn: 47288
2008-02-18 22:57:02 +00:00
Ted Kremenek
6698cb8aa3 Refactored code for transfer functions for binary operators involving two LValues.
Fixed bug in transfer functions for sizeof(*); we were incorrectly evaluating to
a value of the wrong type.

Fixed bug in transfer functions for compound assignments where we did not properly
handle assignments involving dereferences of symbolic values.

llvm-svn: 47190
2008-02-15 23:15:23 +00:00
Ted Kremenek
8db4b110c3 Added transfer function support for conditional branches with a NULL condition (e.g., "for(;;)").
Fixed bug in transfer function for compound assignment operators when both operands where variables but had a non-pointer type (we fired an assertion).

llvm-svn: 47184
2008-02-15 22:29:00 +00:00
Ted Kremenek
e81734b01c Simplified transfer function logic for ++/-- operators.
Added more boilerplate transfer function support for pointer arithmetic.
Added more pretty-printing support for symbolic constraints.
Added transfer function support for handling enum values.
Minor pointer types cleanup in ExplodedGraphImpl.

llvm-svn: 47183
2008-02-15 22:09:30 +00:00
Eli Friedman
783a5c262b Remove unnecessary references to VariableArrayType from Analysis.
llvm-svn: 47157
2008-02-15 12:28:27 +00:00
Ted Kremenek
bc0ba39a1e Added boilerplate transfer function support for pointer arithmetic operations.
llvm-svn: 47147
2008-02-15 00:52:26 +00:00
Ted Kremenek
5b70a22656 When visualizing ExplodedNodes created by GRExprEngine, color nodes with
null-dereferences or bad control-flow red.

llvm-svn: 47140
2008-02-14 22:54:53 +00:00
Ted Kremenek
d3122cb83c Renamed GRConstants => GRSimpleVals.
Moved driver logic for --grsimple to GRSimpleVals.cpp.

llvm-svn: 47137
2008-02-14 22:36:46 +00:00
Ted Kremenek
bd8957b6b2 #include cleanups in GRExprEngine.cpp/GRExprEngine.h. Moved GRExprEngine to
clang namespace.

llvm-svn: 47136
2008-02-14 22:16:04 +00:00
Ted Kremenek
64de207c52 Partitioned definition/implementation of GRExperEngine into .h and .cpp.
Still some cleanup to do, but this initial checkin compiles and runs correctly.

llvm-svn: 47135
2008-02-14 22:13:12 +00:00
Ted Kremenek
cf7cf8e8b0 Migrated transfer functions for binary operators for simple value tracking
from RValues to GRTransferFuncs/GRSimpleVals.

llvm-svn: 47131
2008-02-14 19:37:24 +00:00
Ted Kremenek
4bad8f7ad6 Migrated transfer functions for unary "~" and "-" to GRTransferFuncs/GRSimpleVals.
llvm-svn: 47126
2008-02-14 18:40:24 +00:00
Ted Kremenek
3ca942969e Started partitioning of transfer function logic (and thus the policy behind
these operations) into GRTransferFuncs and its subclasses.  Originally all
of this logic was handled by the class RValue, but in reality different
analyses will want more flexibility on how they evaluate different values.

Transfer functions migrated so far: "Cast"

llvm-svn: 47125
2008-02-14 18:28:23 +00:00
Ted Kremenek
747c777bde Moved Rvalues.h from "Analysis/" to "include/clang/Analysis/PathSensitive".
llvm-svn: 47123
2008-02-14 17:30:51 +00:00
Ted Kremenek
80ebc1d1c9 Added support to GRCoreEngine/GRExprEngine for processing control-flow
from switch...case...default statements.

llvm-svn: 47100
2008-02-13 23:08:21 +00:00
Ted Kremenek
cd44b12f96 Fixed 80 col violations.
llvm-svn: 47076
2008-02-13 18:06:44 +00:00
Ted Kremenek
755d39b233 Unbreak the build.
llvm-svn: 47072
2008-02-13 17:45:18 +00:00
Ted Kremenek
1c16527774 Renamed files to match class renaming in r47070:
http://llvm.org/viewvc/llvm-project?rev=47070&view=rev

llvm-svn: 47071
2008-02-13 17:43:07 +00:00