| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
libclangGRCore
llvm-svn: 122421
|
|
|
|
| |
llvm-svn: 122420
|
|
|
|
| |
llvm-svn: 122270
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implicit lvalue-to-rvalue casts that John McCall
recently introduced. This causes a whole bunch
of logic in the analyzer for handling lvalues
to vanish. It does, however, raise a few issues
in the analyzer w.r.t to modeling various constructs
(e.g., field accesses to compound literals).
The .c/.m analysis test cases that fail are
due to a missing lvalue-to-rvalue cast that
will get introduced into the AST. The .cpp
failures were more than I could investigate in
one go, and the patch was already getting huge.
I have XFAILED some of these tests, and they
should obviously be further investigated.
Some highlights of this patch include:
- CFG no longer requires an lvalue bit for
CFGElements
- StackFrameContext doesn't need an 'asLValue'
flag
- The "VisitLValue" path from GRExprEngine has
been eliminated.
Besides the test case failures (XFAILed), there
are surely other bugs that are fallout from
this change.
llvm-svn: 121960
|
|
|
|
|
|
| |
This is required for supporting const reference to temporary objects.
llvm-svn: 120093
|
|
|
|
|
|
| |
to remake the stackframe everytime in GRExprEngine::ProcessCallEnter().
llvm-svn: 120087
|
|
|
|
| |
llvm-svn: 119900
|
|
|
|
|
|
|
|
|
| |
- Add a new Kind of ProgramPoint: PostInitializer.
- Still use GRStmtNodeBuilder. But special handling PostInitializer in
GRStmtNodeBuilder::GenerateAutoTransition().
- Someday we should clean up the interface of GRStmtNodeBuilder.
llvm-svn: 119335
|
|
|
|
| |
llvm-svn: 119135
|
|
|
|
|
|
|
|
|
| |
contents of a worklist.
This API required changing the BFS worklist to use a deque instead of a queue, but that is better
for performance reasons anyway.
llvm-svn: 118982
|
|
|
|
| |
llvm-svn: 116995
|
|
|
|
|
|
| |
subsumed by the Checker interface.
llvm-svn: 116973
|
|
|
|
| |
llvm-svn: 116971
|
|
|
|
|
|
|
| |
-cfg-add-implicit-dtors - sets CFG::BuildOptions::AddImplicitDtors for AnalysisCosumer to true,
-cfg-add-initializers - sets CFG::BuildOptions::AddInitializers for AnalysisCosumer to true.
llvm-svn: 115142
|
|
|
|
|
|
| |
analyzer to completely analyze a worklist regardless of time taken.
llvm-svn: 115108
|
|
|
|
|
|
| |
that we aborted analysis may not necessarily be due to a loop.
llvm-svn: 113862
|
|
|
|
| |
llvm-svn: 111472
|
|
|
|
|
|
| |
visited a block too many times along a given path. This is to support the unreachable code analysis.
llvm-svn: 110755
|
|
|
|
|
|
| |
analysis) that doesn't prune CFG edges.
llvm-svn: 110087
|
|
|
|
|
|
|
| |
engine of the new translation unit. State marshal is there but no real
work is done. End nodes are passed back.
llvm-svn: 109105
|
|
|
|
| |
llvm-svn: 108988
|
|
|
|
| |
llvm-svn: 108811
|
|
|
|
| |
llvm-svn: 108800
|
|
|
|
| |
llvm-svn: 108668
|
|
|
|
| |
llvm-svn: 108621
|
|
|
|
|
|
|
| |
Let AnalysisContext contain a TranslationUnit.
Let CallEnter refer to an AnalysisContext instead of a FunctionDecl.
llvm-svn: 108617
|
|
|
|
|
|
|
| |
be true if some paths were aborted because they exceeded
the maximum loop unrolling count.
llvm-svn: 107209
|
|
|
|
|
|
|
|
|
| |
by GRExprEngine
when the worklist algorithm has terminated. This allows some checkers to do a post-analysis
phase after all paths have been analyzed.
llvm-svn: 106689
|
|
|
|
| |
llvm-svn: 101239
|
|
|
|
|
|
|
| |
change the block counter map from unsigned -> unsigned to
<StackFrameContext*, unsigned> -> unsigned.
llvm-svn: 99255
|
|
|
|
|
|
|
|
| |
LocationContext
information in ExplodedNode.
llvm-svn: 97785
|
|
|
|
|
|
|
|
|
|
| |
we now may have identical states with different analysis context.
Set the right AnalysisContext in state when entering and leaving a callee.
With both of the above changes, we can pass the test case.
llvm-svn: 97724
|
|
|
|
| |
llvm-svn: 97207
|
|
|
|
|
|
| |
due to a Clang-on-Clang failure
llvm-svn: 97162
|
|
|
|
|
|
| |
They were breaking clang-x86_64-darwin10-selfhost
llvm-svn: 97138
|
|
|
|
| |
llvm-svn: 97131
|
|
|
|
|
|
| |
GRExprEngine::ProcessCallExit().
llvm-svn: 97129
|
|
|
|
| |
llvm-svn: 97127
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch implements the CallEnter/CallExit idea of Ted.
Add two interfaces to GRSubEngine: ProcessCallEnter, ProcessCallExit.
The CallEnter program point uses caller's location context. The
CallExit program point uses callee's location context.
CallEnter is built by GRStmtNodeBuilder. CallExit is built by
GREndPathNodeBuilder.
llvm-svn: 97122
|
|
(1) libAnalysis is a generic analysis library that can be used by
Sema. It defines the CFG, basic dataflow analysis primitives, and
inexpensive flow-sensitive analyses (e.g. LiveVariables).
(2) libChecker contains the guts of the static analyzer, incuding the
path-sensitive analysis engine and domain-specific checks.
Now any clients that want to use the frontend to build their own tools
don't need to link in the entire static analyzer.
This change exposes various obvious cleanups that can be made to the
layout of files and headers in libChecker. More changes pending. :)
This change also exposed a layering violation between AnalysisContext
and MemRegion. BlockInvocationContext shouldn't explicitly know about
BlockDataRegions. For now I've removed the BlockDataRegion* from
BlockInvocationContext (removing context-sensitivity; although this
wasn't used yet). We need to have a better way to extend
BlockInvocationContext (and any LocationContext) to add
context-sensitivty.
llvm-svn: 94406
|