summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/ProgramPoint.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [analyzer] Run remove dead bindings right before leaving a function.Anna Zaks2012-04-201-2/+4
| | | | | | | | | | | | | | | | | | | | | This is needed to ensure that we always report issues in the correct function. For example, leaks are identified when we call remove dead bindings. In order to make sure we report a callee's leak in the callee, we have to run the operation in the callee's context. This change required quite a bit of infrastructure work since: - We used to only run remove dead bindings before a given statement; here we need to run it after the last statement in the function. For this, we added additional Program Point and special mode in the SymbolReaper to remove all symbols in context lower than the current one. - The call exit operation turned into a sequence of nodes, which are now guarded by CallExitBegin and CallExitEnd nodes for clarity and convenience. (Sorry for the long diff.) llvm-svn: 155244
* [analyzer] Malloc: Utter the name of the leaked variable.Anna Zaks2012-03-211-2/+0
| | | | | | | | | | | | | | | Specifically, we use the last store of the leaked symbol in the leak diagnostic. (No support for struct fields since the malloc checker doesn't track those yet.) + Infrastructure to track the regions used in store evaluations. This approach is more precise than iterating the store to obtain the region bound to the symbol, which is used in RetainCount checker. The region corresponds to what is uttered in the code in the last store and we do not rely on the store implementation to support this functionality. llvm-svn: 153212
* ProgramPoint cleanup after the previous commit r141408 (remove the copy ↵Anna Zaks2011-10-071-0/+25
| | | | | | | | constructor, mark withTag const). Move getProgramPoint() utility from CoreEngine.cpp into ProgramPoint. llvm-svn: 141414
* [analyzer] change "tag" in ProgramPoint from "void*" to a ProgramPointTag*.Ted Kremenek2011-08-121-0/+26
| | | | | | | Having a notion of an actual ProgramPointTag will aid in introspection of the analyzer's behavior. For example, the GraphViz output of the analyzer will pretty-print the tags in a useful manner. llvm-svn: 137529
* ProgramPoint now takes the space of two pointers instead of one. This change wasTed Kremenek2008-09-161-64/+0
| | | | | | | | | 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
* Make assertions for all addresses passed to ProgramPoint that they have at ↵Argyrios Kyrtzidis2008-04-261-4/+3
| | | | | | least an 8-byte alignment. llvm-svn: 50310
* Make a major restructuring of the clang tree: introduce a top-levelChris Lattner2008-03-151-0/+65
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
OpenPOWER on IntegriCloud