| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
the current statement around everywhere. Preparation for symbolic extents.
llvm-svn: 107422
|
| |
|
|
| |
llvm-svn: 107388
|
| |
|
|
|
|
| |
this time actually used the cached checker list when calling back to Checker visit methods. This reduces the analysis time for sqlite3.c by 8%.
llvm-svn: 107259
|
| |
|
|
|
|
| |
don't crash if we do a funny thing like ((int)ptr)&1. Fixes PR7527.
llvm-svn: 107236
|
| |
|
|
|
|
|
| |
be true if some paths were aborted because they exceeded
the maximum loop unrolling count.
llvm-svn: 107209
|
| |
|
|
| |
llvm-svn: 107012
|
| |
|
|
|
|
| |
SimpleSValuator::EvalBinOpLL().
llvm-svn: 106992
|
| |
|
|
|
|
| |
constraints. Part of PR7491.
llvm-svn: 106972
|
| |
|
|
| |
llvm-svn: 106964
|
| |
|
|
|
|
| |
appear in this context.
llvm-svn: 106919
|
| |
|
|
|
|
| |
scaled as well.
llvm-svn: 106911
|
| |
|
|
|
|
|
|
|
|
|
|
| |
a winowed list of checkers that actually do something for a given StmtClass.
As the number of checkers grows, this may potentially significantly reduce
the number of checkers called at any one time. My own measurements show that
for the ~20 registered Checker objects, only ~5 of them respond at any one time
to a give statement. While this isn't a net performance win right now (there
is a minor slowdown on sqlite.3) this improvement does greatly improve debugging
when stepping through the checkers used to evaluate a given statement.
llvm-svn: 106884
|
| |
|
|
|
|
| |
regression test.
llvm-svn: 106883
|
| |
|
|
|
|
| |
from the context when it is not already available.
llvm-svn: 106868
|
| |
|
|
| |
llvm-svn: 106755
|
| |
|
|
| |
llvm-svn: 106742
|
| |
|
|
| |
llvm-svn: 106741
|
| |
|
|
| |
llvm-svn: 106738
|
| |
|
|
|
|
|
|
|
| |
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: 106617
|
| |
|
|
| |
llvm-svn: 106616
|
| |
|
|
|
|
|
|
| |
Fixes analyzer
crash reported in PR 7450.
llvm-svn: 106609
|
| |
|
|
|
|
|
|
|
| |
types, updating callers of both isFloatingType() and
isRealFloatingType() accordingly. Caught at least one issue where we
allowed one to declare a vector of vectors (!), along with cleaning up
the standard-conversion logic for C++.
llvm-svn: 106595
|
| |
|
|
|
|
|
| |
Instead, halt the analysis of the current path, which is what we do in GRExprEngine::ProcessStmt
for all other C++ constructs not currently handled by the analyzer.
llvm-svn: 106561
|
| |
|
|
| |
llvm-svn: 106530
|
| |
|
|
|
|
| |
assuming relationships, convert the integers to the same type as the symbol, at least for now.
llvm-svn: 106458
|
| |
|
|
| |
llvm-svn: 106456
|
| |
|
|
| |
llvm-svn: 106403
|
| |
|
|
|
|
| |
as "a*0" and "a+0". This is not very powerful, but does make the analyzer look a little smarter than it actually is.
llvm-svn: 106402
|
| |
|
|
|
|
| |
pointers) causes a divide-by-zero error. Simple fix: check if the pointee type size is 0 and bail out early if it is.
llvm-svn: 106401
|
| |
|
|
|
|
| |
const2
llvm-svn: 106339
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to use them instead of SourceRange. CharSourceRange is just a SourceRange
plus a bool that indicates whether the range has the end character resolved
or whether the end location is the start of the end token. While most of
the compiler wants to think of ranges that have ends that are the start of
the end token, the printf diagnostic stuff wants to highlight ranges within
tokens.
This is transparent to the diagnostic stuff. To start taking advantage of
the new capabilities, you can do something like this:
Diag(..) << CharSourceRange::getCharRange(Begin,End)
llvm-svn: 106338
|
| |
|
|
| |
llvm-svn: 106274
|
| |
|
|
|
|
|
|
| |
reference stack memory.
Also refactor the diagnostics so that we print out the kind of stack memory returned.
llvm-svn: 106210
|
| |
|
|
| |
llvm-svn: 106188
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
global variables
by inspecting the Store bindings instead of iterating over all the global variables
in a translation unit. By looking at the store directly, we avoid cases where we cannot
directly load from the global variable, such as an array (which can result in an assertion failure)
and it also catches cases where we store stack addresses to non-scalar globals.
Also, but not iterating over all the globals in the translation unit, we maintain cache
locality, and the complexity of the checker becomes restricted to the complexity of the
analyzed function, and doesn't scale with the size of the translation unit.
This fixes PR 7383.
llvm-svn: 106184
|
| |
|
|
|
|
|
|
|
|
| |
returns the base region in
the binding key instead of the region + offset. It isn't clear if this is the best semantics, but most
clients will likely only care about simple bindings, or bindings to a particular variable. We can
refine later if necessary.
llvm-svn: 106183
|
| |
|
|
|
|
| |
BindingsHandler returns false.
llvm-svn: 106182
|
| |
|
|
| |
llvm-svn: 106087
|
| |
|
|
| |
llvm-svn: 106086
|
| |
|
|
|
|
| |
unknown.
llvm-svn: 106085
|
| |
|
|
| |
llvm-svn: 106084
|
| |
|
|
|
|
| |
arguments are not undefined.
llvm-svn: 106083
|
| |
|
|
|
|
| |
This is the start.
llvm-svn: 106082
|
| |
|
|
|
|
|
|
|
|
| |
in C++ that involve both integral and enumeration types. Convert all
of the callers to Type::isIntegralType() that are meant to work with
both integral and enumeration types over to
Type::isIntegralOrEnumerationType(), to prepare to eliminate
enumeration types as integral types.
llvm-svn: 106071
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
library configuration
Currently, all AST consumers are located in the Frontend library,
meaning that in a shared library configuration, Frontend has a
dependency on Rewrite, Checker and CodeGen. This is suboptimal for
clients which only wish to make use of the frontend. CodeGen in
particular introduces a large number of unwanted dependencies.
This patch breaks the dependency by moving all AST consumers with
dependencies on Rewrite, Checker and/or CodeGen to their respective
libraries. The patch therefore introduces dependencies in the other
direction (i.e. from Rewrite, Checker and CodeGen to Frontend).
After applying this patch, Clang builds correctly using CMake and
shared libraries ("cmake -DBUILD_SHARED_LIBS=ON").
N.B. This patch includes file renames which are indicated in the
patch body.
Changes in this revision of the patch:
- Fixed some copy-paste mistakes in the header files
- Modified certain aspects of the coding to comply with the LLVM
Coding Standards
llvm-svn: 106010
|
| |
|
|
| |
llvm-svn: 105708
|
| |
|
|
| |
llvm-svn: 105687
|
| |
|
|
|
|
| |
improves generality. Thanks Ted.
llvm-svn: 105686
|
| |
|
|
| |
llvm-svn: 105657
|