| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
was dereferenced. Addresses <rdar://problem/7039161>.
llvm-svn: 89726
|
|
|
|
|
|
| |
variants instead of using llvm::cl::init(true) arguments.
llvm-svn: 89315
|
|
|
|
|
|
|
| |
option enables new "internal" checks that will eventually be turned on
by default but still require broader testing.
llvm-svn: 88671
|
|
|
|
|
|
| |
- 'for i in $(find . -type f); do sed -e 's#\(RUN:.*[^ ]\) *&& *$#\1#g' $i | FileUpdate $i; done', for the curious.
llvm-svn: 86430
|
|
|
|
| |
llvm-svn: 83030
|
|
|
|
| |
llvm-svn: 79954
|
|
|
|
|
|
|
| |
OldCastRegion used), and the associated command line option
'-analyzer-store=old-basic-cast'.
llvm-svn: 77509
|
|
|
|
| |
llvm-svn: 76813
|
|
|
|
|
|
|
|
|
| |
'Checker' interface. An updated test case illustrates that after calling a
function with the 'nonnull' attribute we now register the fact that the passed
pointer must be non-null. This retention of information was not possible with
the previously used GRSimpleAPICheck interface.
llvm-svn: 76797
|
|
|
|
| |
llvm-svn: 76610
|
|
|
|
|
|
|
|
| |
and replace the 'clang-cc' option '-analyzer-store=basic-new-cast' with
'-analyzer-store=basic-old-cast'. We'll keep the old CastRegion implementation
around for a little while for regression testing.
llvm-svn: 75209
|
|
|
|
|
|
| |
using '-analyzer-store=basic-new-cast'.
llvm-svn: 74865
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GRTransferFuncs had the conflated role of both constructing SVals (symbolic
expressions) as well as handling checker-specific logic. Now SValuator has the
role of constructing SVals from expressions and GRTransferFuncs just handles
checker-specific logic. The motivation is by separating these two concepts we
will be able to much more easily create richer constraint-generating logic
without coupling it to the main checker transfer function logic.
We now have one implementation of SValuator: SimpleSValuator.
SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals
(which is removed in this patch). This includes the logic for EvalBinOp,
EvalCast, etc. Because SValuator has a narrower role than the old
GRTransferFuncs, the interfaces are much simpler, and so is the implementation
of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of
SVal-related logic in GRSimpleVals and cleaned it up while moving it over to
SimpleSValuator.
As a consequence of removing GRSimpleVals, there is no longer a
'-checker-simple' option. The '-checker-cfref' did everything that option did
but also ran the retain/release checker. Of course a user may not always wish to
run the retain/release checker, nor do we wish core analysis logic buried in the
checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp
to separate out these pieces into the core analysis engine.
llvm-svn: 74229
|
|
|
|
|
|
|
| |
'==' and '!=' (some code in the '!=' was not replicated in the '==' code,
causing some constraints to get lost).
llvm-svn: 70885
|
|
|
|
| |
llvm-svn: 70883
|
|
|
|
| |
llvm-svn: 70614
|
|
|
|
|
|
|
|
| |
This fixes <rdar://problem/6839489> 10A345: Clang does not warm about mismatched returns (void return from a bool function)
Will implement -Wreturn-type, -Wno-return-type in another commit.
llvm-svn: 70492
|
|
|
|
|
|
| |
Tests and drivers updated, still need to shuffle dirs.
llvm-svn: 67602
|
|
|
|
|
|
| |
and back.
llvm-svn: 66127
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Move all analyzer options logic to AnalysisConsumer.cpp.
- Unified specification of stores/constraints/output to be:
-analyzer-output=...
-analyzer-store=...
-analyzer-constraints=...
instead of -analyzer-range-constraints, -analyzer-store-basic, etc.
- Updated drivers (ccc-analyzer, scan-builds, new ccc) to obey this new
interface
- Updated test cases to conform to new driver options
llvm-svn: 64737
|
|
|
|
| |
llvm-svn: 64663
|
|
|
|
| |
llvm-svn: 63930
|
|
|
|
|
|
|
|
|
| |
for FieldRegion. This enables us to track more values.
Simplify SymbolicRegion::getRValueType(). We assume the symbol always has
pointer type.
llvm-svn: 63928
|
|
|
|
| |
llvm-svn: 62801
|
|
|
|
|
|
| |
individual checker options.
llvm-svn: 62634
|
|
|
|
|
|
| |
old logic to determine the value of a switch 'case' label.
llvm-svn: 62395
|
|
|
|
| |
llvm-svn: 62130
|
|
|
|
|
|
| |
us to measure the effect of this optimization.
llvm-svn: 61319
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Now Bind() methods take and return GRState* because binding could
also alter GDM.
* No variables are initialized except those declared with initial
values.
* failed C test cases are due to bugs in RemoveDeadBindings(),
which removes constraints that is still alive. This will be fixed in later
patch.
* default value of array and struct regions will be implemented in later patch.
llvm-svn: 61274
|
|
|
|
| |
llvm-svn: 60548
|
|
|
|
| |
llvm-svn: 60547
|
|
|
|
| |
llvm-svn: 60544
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix nonsensical logic in AssumeSymGE. When comparing 'sym >= constant' and the
constant is the maximum integer value, add the constraint that 'sym ==
constant' when the path is deemed feasible. All other cases are feasible.
- Improve AssumeSymGT. When comparing 'sym > constant' and constant is the
maximum integer value we know the path is infeasible.
- Add test case for this enhancement to AssumeSymGT.
llvm-svn: 60490
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix nonsensical logic in AssumeSymLE. When comparing 'sym <= constant' and the
constant is the minimum integer value, add the constraint that 'sym ==
constant' when the path is deemed feasible. All other cases are feasible.
- Improve AssumeSymLT to address <rdar://problem/6407949>. When comparing
'sym < constant' and constant is the minimum integer value we know the
path is infeasible.
- Add test case for <rdar://problem/6407949>.
llvm-svn: 60489
|
|
|
|
|
|
| |
of the LHS when the computation type is an integer of more bits.
llvm-svn: 59352
|
|
|
|
| |
llvm-svn: 59014
|
|
|
|
| |
llvm-svn: 58983
|
|
|
|
| |
llvm-svn: 57742
|
|
|
|
|
|
| |
array and field accesses.
llvm-svn: 57658
|
|
|
|
| |
llvm-svn: 56548
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For checking if a symbol >= value, we need to check if symbol == value || symbol
> value. When checking symbol > value and we know that symbol != value, the path
is infeasible only if value == maximum integer.
For checking if a symbol <= value, we need to check if symbol == value || symbol
< value. When checking symbol < value and we know that symbol != value, the path
is infeasible only if value == minimum integer.
Updated test case exercising this logic: we only prune paths if the values are
unsigned.
llvm-svn: 56354
|
|
|
|
| |
llvm-svn: 56294
|
|
|
|
| |
llvm-svn: 56261
|
|
|
|
|
|
|
| |
if we know that 'len != 0' and know that 'i == 0' then we know that
'i < len' must evaluate to true and cannot evaluate to false
llvm-svn: 56260
|
|
|
|
|
|
|
|
| |
- warn about nonnull being applied to functions with no pointer arguments
- continue processing argument list in the attribute when we encounter a non-pointer parameter being marked as nonnull
- when no argument list is specified, only mark pointers as nonnull. This fixes PR 2732 and radar 6188814.
llvm-svn: 55610
|
|
|
|
| |
llvm-svn: 54834
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Like EXTENSION but always generates a warning (even without
-pedantic).
- Updated ptr -> int, int -> ptr, and incompatible cast warnings to
be EXTWARN.
- Other EXTENSION level diagnostics should be audited for upgrade.
- Updated several test cases to fix code which produced unanticipated
warnings.
llvm-svn: 54335
|
|
|
|
|
|
| |
of the variable whose address was returned.
llvm-svn: 54253
|
|
|
|
|
|
|
|
| |
arguments marked nonnull.
This implements <rdar://problem/6069935>
llvm-svn: 53891
|
|
|
|
| |
llvm-svn: 50454
|