Ted Kremenek
5cf87ff564
Fix CFG construction for ObjCForCollectionStmt: 'element' expression can be anything that evaluates to an lvalue
...
llvm-svn: 59289
2008-11-14 01:57:41 +00:00
Ted Kremenek
9f164c96bf
Hook up "BodyBlock", not "Block".
...
llvm-svn: 59227
2008-11-13 07:01:10 +00:00
Ted Kremenek
1516dc075a
Correctly connect 'continue' and 'break' statements in Objective-C fast enumeration for blocks to the appropriate basic blocks.
...
llvm-svn: 59226
2008-11-13 06:36:45 +00:00
Ted Kremenek
ce9082ad5c
Fix bug where the body block of an ObjCForCollectionStmt would not properly get expanded as a series of basic blocks.
...
llvm-svn: 59197
2008-11-13 00:06:59 +00:00
Ted Kremenek
6d8b46e71d
ObjCForCollectionStmts are block-level expressions.
...
llvm-svn: 59160
2008-11-12 21:11:49 +00:00
Sebastian Redl
6f28289aca
Introduce a single AST node SizeOfAlignOfExpr for all sizeof and alignof expressions, both of values and types.
...
llvm-svn: 59057
2008-11-11 17:56:53 +00:00
Ted Kremenek
9d56e64543
Add CFG support for Objective-C 2.0 fast enumeration 'for' statement:
...
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_7_section_2.html#//apple_ref/doc/uid/TP30001163-CH18-SW3
Need to modify GRExprEngine, LiveVariables, and UninitializedValues to understand this construct.
llvm-svn: 59049
2008-11-11 17:10:00 +00:00
Ted Kremenek
9bb286ff43
Migrate DeclStmt over to using a DeclGroup instead of a pointer to a ScopedDecl*.
...
This also removes the ugly hack needed in CFG.cpp for subclassing DeclStmt to create a DeclStmt with one Decl*.
llvm-svn: 57275
2008-10-07 23:09:49 +00:00
Ted Kremenek
ef52c641e7
Use DeclStmt::decl_iterator to walk a group of Decl*'s instead of using the ScopedDecl chain.
...
llvm-svn: 57206
2008-10-06 20:56:19 +00:00
Zhongxing Xu
8d1928a4ca
Reverse the RHSBlock of LogicalOp && and ||
...
llvm-svn: 57041
2008-10-04 05:48:38 +00:00
Ted Kremenek
d86d39cc9e
Add CFG support for implicit-control flow for VLA size expressions within an SizeOfAlignOfTypeExpr.
...
llvm-svn: 56706
2008-09-26 22:58:57 +00:00
Ted Kremenek
ac49ea63c6
Do not create CFGs for functions/methods using blocks (need to add control-flow).
...
llvm-svn: 56672
2008-09-26 18:17:07 +00:00
Ted Kremenek
61a625ff70
Move VLA processing logic from LiveVariables to CFG construction. This way all dataflow analyses "see" the VLA size expressions.
...
llvm-svn: 56655
2008-09-26 16:26:36 +00:00
Ted Kremenek
0ecb53a421
ProgramPoint now takes the space of two pointers instead of one. This change was
...
motivated because it became clear that the number of subclasses of ProgramPoint
would expand and we ran out of bits to represent a pointer variant. As a plus of
this change, BlockEdge program points can now be represented explicitly without
using a cache of CFGBlock* pairs in CFG.
llvm-svn: 56245
2008-09-16 18:44:52 +00:00
Ted Kremenek
2d470fc0ba
Patch by Csaba Hruska!
...
"Here is a patch what replaces std::ostream with llvm::raw_ostream. This patch
covers the AST library, but ignores Analysis lib."
llvm-svn: 56185
2008-09-13 05:16:45 +00:00
Ted Kremenek
b0746ca90b
Fix CFG construction bug:
...
- Within for loops, 'continue' should jump to a basic block containing the
increment code
llvm-svn: 55800
2008-09-04 21:48:47 +00:00
Daniel Dunbar
56fdb6ae69
More #include cleaning
...
- Kill unnecessary #includes in .cpp files. This is an automatic
sweep so some things removed are actually used, but happen to be
included by a previous header. I tried to get rid of the obvious
examples and this was the easiest way to trim the #includes in one
fell swoop.
- We now return to regularly scheduled development.
llvm-svn: 54632
2008-08-11 06:23:49 +00:00
Ted Kremenek
8889bb3ff4
Cleanup some processing with DeclStmt, and gradually start using the internal BumpPtrAllocator to allocator more of CFG's data structures.
...
llvm-svn: 54433
2008-08-06 23:20:50 +00:00
Ted Kremenek
e26ccf3553
Always construct the BumpPtrAllocator used by CFG as an instance variable.
...
llvm-svn: 54429
2008-08-06 22:22:32 +00:00
Ted Kremenek
be9b33bf0f
Nico Weber:
...
"the attached patch fixes some typos, 80 cols violations, etc. in comments."
llvm-svn: 54328
2008-08-04 22:51:42 +00:00
Ted Kremenek
5fc6dc070c
Fix one strict-aliasing warning.
...
llvm-svn: 51707
2008-05-29 21:52:26 +00:00
Steve Naroff
021ca18bb5
- Move ObjC Expresssion AST's from Expr.h => ExprObjC.h
...
- #include ExprObjC.h in many places
llvm-svn: 51703
2008-05-29 21:12:08 +00:00
Ted Kremenek
92137a3d8d
Added CFGBlock::hasBinaryBranchTerminator().
...
llvm-svn: 51190
2008-05-16 16:06:00 +00:00
Ted Kremenek
6065ef6b9b
Bug fix in CFG::getBlockEdgeImpl(): Use a BumpPtrAllocator to allocate
...
std::pair<CFGBlock*, CFGBlock*> that have an 8-byte alignment for use with
ProgramPoint. This fixes a bug reported by Argiris where using std::set<> on
Windows would result in a 4-byte alignment, not an 8-byte alignment.
Fixes: <rdar://problem/5892265>
llvm-svn: 50364
2008-04-28 18:00:46 +00:00
Ted Kremenek
c1f9a28e4d
Added CFGBlock::getTerminatorCondition() to get the Expr* of the condition a block's terminator.
...
Refactored LiveVariables to use getTerminatorCondition() in VisitTerminator().
Bug fix: CFG now computes Block-level expression numbers using information
from block terminators. This fixes <rdar://problem/5868189>.
llvm-svn: 49818
2008-04-16 21:10:48 +00:00
Ted Kremenek
fff4fc7e6d
Bug fix in CFG construction: VisitCompoundStmt should return the last created block.
...
llvm-svn: 48460
2008-03-17 17:19:44 +00:00
Chris Lattner
7a51313d8a
Make a major restructuring of the clang tree: introduce a top-level
...
lib dir and move all the libraries into it. This follows the main
llvm tree, and allows the libraries to be built in parallel. The
top level now enforces that all the libs are built before Driver,
but we don't care what order the libs are built in. This speeds
up parallel builds, particularly incremental ones.
llvm-svn: 48402
2008-03-15 23:59:48 +00:00