Ted Kremenek
3d55c84c99
Added "InfeasibleEdge" to represent an infeasible state transition.
...
llvm-svn: 45802
2008-01-10 00:58:25 +00:00
Fariborz Jahanian
82ae0152a7
Allow messaging expression as foreach's collection expression.
...
llvm-svn: 45793
2008-01-10 00:24:29 +00:00
Ted Kremenek
24ea11d4e0
Renamed various traits and classes. Added "Infeasible" bit to ExplodedNodeImpl
...
so that nodes can be marked as representing an infeasible program point. This
flag lets the path-sensitive solver know that no successors should be generated
for such nodes.
llvm-svn: 45788
2008-01-09 23:11:36 +00:00
Ted Kremenek
84ab850e46
Renamed Stmt***Edge and ***StmtEdge (where *** = "Stmt" or "Blk") classes to
...
BExpr*** and ***BExpr respectively. These edges represent program locations
between the entrance/exit of a block and Block-level Expressions.
Also added ***SExpr and SExpr*** ProgramEdges to represent the locations in the
program between the evaluation of subexpressions and block-level expressions.
llvm-svn: 45786
2008-01-09 22:52:38 +00:00
Ted Kremenek
fed4cce0cc
Removed some files related to the path-sensitive solver as part of some
...
code restructuring. (new files will be introduced shortly)
llvm-svn: 45785
2008-01-09 22:49:37 +00:00
Chris Lattner
41a1ef0dfe
implement proper support for _Bool in memory, which is usually i8, not i1.
...
This fixes a crash reported by Seo Sanghyeon
llvm-svn: 45778
2008-01-09 18:47:25 +00:00
Chris Lattner
82bebb2432
Fix a typo, patch by Mike Stump!
...
llvm-svn: 45763
2008-01-09 00:00:15 +00:00
Chris Lattner
e3e358c317
readability improvement suggested by Sam Bishop, thanks!
...
llvm-svn: 45735
2008-01-08 04:13:21 +00:00
Ted Kremenek
9384343c11
Added nodes_iterator to the GraphTrait for ExplodedNode<>.
...
llvm-svn: 45730
2008-01-08 00:46:00 +00:00
Ted Kremenek
a3da232ce7
Added GraphTraits<> partial specializations for ExplodedNode<> classes.
...
llvm-svn: 45729
2008-01-08 00:26:05 +00:00
Ted Kremenek
35ff5b0ee6
Added more boilerplate for processing end-of-paths.
...
llvm-svn: 45724
2008-01-07 22:22:13 +00:00
Ted Kremenek
8569309bca
Added ownership of "checker state" within the ExplodedGraph. Moved code that
...
creates the initial root node from the constructor of ReachabilityEngine to
ReachabilityEngine::ExecuteWorklist.
llvm-svn: 45722
2008-01-07 21:56:52 +00:00
Chris Lattner
a30be59fa2
Fix a nasty corner case that Neil noticed in PR1900, where we would
...
incorrectly apply the multiple include optimization to files with
guards like:
#if !defined(x) MACRO
where MACRO could expand to different things in different contexts.
Thanks Neil!
llvm-svn: 45716
2008-01-07 19:50:27 +00:00
Ted Kremenek
1b0ea82459
Substituted all instances of the string "Objc" for "ObjC". This fixes
...
some naming inconsistencies in the names of classes pertaining to Objective-C
support in clang.
llvm-svn: 45715
2008-01-07 19:49:32 +00:00
Fariborz Jahanian
699e638e4f
Make interfaceTypesAreCompatible a private method.
...
llvm-svn: 45713
2008-01-07 19:13:39 +00:00
Ted Kremenek
9dbf8a93a7
Renamed SimulVertex, SimulGraph, and SimulEngine to:
...
ExplodedNode, ExplodedGraph (to match the vocabulary in the RHS paper)
ReachabilityEngine
The implementation of the core of the path-sensitive dataflow solver has
been de-templatized and places in ReachabilityEngine.cpp.
The solver is still incomplete.
llvm-svn: 45711
2008-01-07 19:08:42 +00:00
Fariborz Jahanian
fef287cb67
Issue diagnostics if more than one declaration in objectove-c's foreach-stmt header.
...
llvm-svn: 45708
2008-01-07 17:52:35 +00:00
Chris Lattner
cfb6f430b6
Emit warnings like "dereferencing void pointer" instead of trying to
...
pretty print the type name for void.
llvm-svn: 45664
2008-01-06 22:21:46 +00:00
Fariborz Jahanian
3622e5954b
Minor changes as suggested by Chris L.
...
llvm-svn: 45598
2008-01-04 23:04:08 +00:00
Chris Lattner
940cfebf90
add comments for the various AssignConvertType's, and split int->pointer from pointer->int.
...
llvm-svn: 45591
2008-01-04 18:22:42 +00:00
Chris Lattner
9bad62c72a
Merge all the 'assignment' diagnostic code into one routine, decloning
...
it from several places. This merges the diagnostics, making them more
uniform and fewer in number. This also simplifies and cleans up the code.
Some highlights:
1. This removes a bunch of very-similar diagnostics.
2. This renames AssignmentCheckResult -> AssignConvertType
3. This merges PointerFromInt + IntFromPointer which were always treated the same.
4. This updates a bunch of test cases that have minor changes to the produced diagnostics.
llvm-svn: 45589
2008-01-04 18:04:52 +00:00
Chris Lattner
94cf8061e7
fix a build problem where NULL isn't implicitly defined by the headers this file includes.
...
llvm-svn: 45587
2008-01-04 16:27:03 +00:00
Fariborz Jahanian
775d5d02af
Patch to add semantics check for ObjC2's foreacn statement.
...
llvm-svn: 45561
2008-01-04 00:27:46 +00:00
Chris Lattner
816dea2fc5
generalize some of the conversion warnings.
...
llvm-svn: 45560
2008-01-03 23:38:43 +00:00
Chris Lattner
874e024f10
regroup assignment-related diagnostics, fix a mistake in one.
...
llvm-svn: 45558
2008-01-03 23:13:36 +00:00
Chris Lattner
0a788433eb
give better diagnostics for converting between function pointer and void*.
...
llvm-svn: 45556
2008-01-03 22:56:36 +00:00
Ted Kremenek
fde239df06
Fixed misuse of pointer within SimulVertex::addPredecessor()
...
llvm-svn: 45551
2008-01-03 22:09:27 +00:00
Ted Kremenek
9d375282cf
SimulGraph::getVertex() now also returns a bool indicating if the returned
...
vertex was freshly created.
llvm-svn: 45550
2008-01-03 22:08:52 +00:00
Ted Kremenek
6abe02ada6
Constified methods front() and back() in CFGBlock.
...
llvm-svn: 45549
2008-01-03 22:07:58 +00:00
Ted Kremenek
d6c30e58e2
De-constified the pointers returned by the Dst() and Src() methods of
...
the various ProgramEdge classes.
llvm-svn: 45548
2008-01-03 22:07:01 +00:00
Fariborz Jahanian
732b8c2dc5
Patch to parse/build AST ObjC2's foreach statement.
...
llvm-svn: 45539
2008-01-03 17:55:25 +00:00
Fariborz Jahanian
8361552af9
New declarations/defs for Objc2's foreach-statement. This is work in progress.
...
llvm-svn: 45511
2008-01-02 22:54:34 +00:00
Ted Kremenek
161807f8d1
SimulVertex: Inverted argument order when calling the Profile method of StateTy.
...
SimulGraph: Inverted argument order when calling the Profile method of VertexTy
(plus minor cleanups)
llvm-svn: 45508
2008-01-02 22:20:20 +00:00
Chris Lattner
266a2ff3ac
Compute the proper sourcerange for an CompoundLiteralExpr.
...
llvm-svn: 45504
2008-01-02 21:46:24 +00:00
Ted Kremenek
c7523bcaaa
Converted state reference within SimulVertex from StateTy* to StateTy.
...
This is more flexible.
llvm-svn: 45502
2008-01-02 21:31:13 +00:00
Ted Kremenek
796b64337b
Added/fixed some comments.
...
llvm-svn: 45490
2008-01-02 18:31:49 +00:00
Ted Kremenek
dc8ebe5022
Sprinkled 'typename' and fixed a few typos and type declaration errors to
...
make these headers compile.
llvm-svn: 45488
2008-01-02 17:45:00 +00:00
Ted Kremenek
2290828271
Added fixme.
...
llvm-svn: 45487
2008-01-02 17:05:47 +00:00
Ted Kremenek
032cb4433e
Allocate vertices using a BumpPtrAllocator.
...
llvm-svn: 45486
2008-01-02 17:00:32 +00:00
Chris Lattner
7429581c33
remove attributions from .def files.
...
llvm-svn: 45413
2007-12-29 20:03:32 +00:00
Chris Lattner
5b12ab8c93
Don't attribute in file headers anymore. See llvmdev for the
...
discussion of this change.
llvm-svn: 45410
2007-12-29 19:59:25 +00:00
Christopher Lamb
ad66035921
Fix an error in the base/idx accessors for ArraySubscriptExpr's that crops up with vector element access.
...
llvm-svn: 45390
2007-12-28 23:43:03 +00:00
Chris Lattner
e4407ede20
Add accessors + iterator interface.
...
llvm-svn: 45378
2007-12-28 05:25:02 +00:00
Ted Kremenek
dbc5385608
Added (incomplete) implementation of SimulEngine, a worklist-based dataflow
...
solver for path-sensitive, intra-procedural analysis.
llvm-svn: 45306
2007-12-22 01:43:37 +00:00
Ted Kremenek
e7e26cd01e
Converted Loc back to being of type ProgramEdge. Ultimately I believe we want
...
the ability to refer to the vertex set for all the vertices associated with an
edge. This will allow some nice queries over the graph, and (hopefully) will
reduce the memory footprint of SimulVertex.
llvm-svn: 45299
2007-12-21 23:23:12 +00:00
Ted Kremenek
e1d1a9479f
Added preliminary implementation of SimulGraph, which represents the
...
intra-procedural supergraph of a path-sensitive dataflow analysis.
llvm-svn: 45298
2007-12-21 23:21:58 +00:00
Ted Kremenek
908cff9fa4
Changed "Location" from "ProgramEdge" to "ProgramEdge&" (slightly more svelt
...
memory representation).
llvm-svn: 45297
2007-12-21 22:57:10 +00:00
Ted Kremenek
95416706ed
SimulVertex now subclasses FoldingSetNode.
...
llvm-svn: 45296
2007-12-21 22:41:58 +00:00
Ted Kremenek
1616945a7d
Added Profile method to SimulVertex.
...
llvm-svn: 45295
2007-12-21 22:40:41 +00:00
Ted Kremenek
bf593f81fa
Directory restructing of Analysis files.
...
Created include/clang/Analysis/Analyses directory.
- Moved LiveVariables.h and UninitializedValues.h into this dir.
Moved ExprDeclBitVector.h into Analysis/Support.
Updated all clients who use these headers to reflect the new paths.
llvm-svn: 45292
2007-12-21 21:42:19 +00:00