| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
expected-warning-re to let matched for Win32 targets.
- format specifies type 'wchar_t **' (aka 'int **') but the argument has type 'float *'
- format specifies type 'wchar_t **' (aka 'unsigned short **') but the argument has type 'float *'
llvm-svn: 163468
|
| |
|
|
| |
llvm-svn: 163467
|
| |
|
|
| |
llvm-svn: 163465
|
| |
|
|
| |
llvm-svn: 163464
|
| |
|
|
|
|
| |
fixes the buildbots.
llvm-svn: 163462
|
| |
|
|
|
|
|
| |
PathDiagnosticEventPieces were *always* pruned. Instead, they
are suppose to only be pruned if the entire call gets pruned.
llvm-svn: 163460
|
| |
|
|
|
|
|
| |
string literal, produce a diagnostic pointing at the erroneous character
range, not at the start of the literal.
llvm-svn: 163459
|
| |
|
|
| |
llvm-svn: 163456
|
| |
|
|
|
|
|
| |
of the analyzer by using the FullProfile() of a PathDiagnostic
for ordering them.
llvm-svn: 163455
|
| |
|
|
|
|
|
| |
As a corollary to the previous commit, even when an extension is
available, we can still offer a fixit to the standard modifier.
llvm-svn: 163453
|
| |
|
|
|
|
|
|
|
| |
This seems to be a GNU libc extension; we offer a fixit to %lld on
these platforms.
<rdar://problem/11518237>
llvm-svn: 163452
|
| |
|
|
|
|
|
|
|
| |
the trap BB out of the individual checks and into a common function, to prepare
for making this code call into a runtime library. Rename the existing EmitCheck
to EmitTypeCheck to clarify it and to move it out of the way of the new
EmitCheck.
llvm-svn: 163451
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ObjCSelfInitChecker stashes information in the GDM to persist it across
function calls; it is stored in pre-call checks and retrieved post-call.
The post-call check is supposed to clear out the stored state, but was
failing to do so in cases where the call did not have a symbolic return
value.
This was actually causing the inappropriate cache-out from r163361.
Per discussion with Anna, we should never actually cache out when
assuming the receiver of an Objective-C message is non-nil, because
we guarded that node generation by checking that the state has changed.
Therefore, the only states that could reach this exact ExplodedNode are
ones that should have merged /before/ making this assumption.
r163361 has been reverted and the test case removed, since it won't
actually test anything interesting now.
llvm-svn: 163449
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 163448
|
| |
|
|
| |
llvm-svn: 163447
|
| |
|
|
| |
llvm-svn: 163446
|
| |
|
|
|
|
| |
deterministic."
llvm-svn: 163445
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, we'd just keep constraints around forever, which means we'd
never be able to merge paths that differed only in constraints on dead
symbols.
Because we now allow constraints on symbolic expressions, not just single
symbols, this requires changing SymExpr::symbol_iterator to include
intermediate symbol nodes in its traversal, not just the SymbolData leaf
nodes.
llvm-svn: 163444
|
| |
|
|
|
|
|
|
|
|
| |
RegionStoreManager was only treating a SymbolicRegion's symbel as live
if there was a binding referring to the region itself.
No test case because constraints are currently not being cleaned out
of the constraint manager at all (even if the symbol is legitimately dead).
llvm-svn: 163443
|
| |
|
|
|
|
|
|
|
|
|
| |
This is necessary because further analysis will assume that the SVal's
type matches the AST type. This caused a crash when trying to perform
a derived-to-base cast on a C++ object that had been new'd to be another
object type.
Yet another crash in PR13763.
llvm-svn: 163442
|
| |
|
|
|
|
|
| |
Teach malloc sizeof checker to find type inconsistencies in multi-
dimensional arrays.
llvm-svn: 163438
|
| |
|
|
|
|
|
|
| |
in classes. Use it to flag those method implementations which don't
contain call to 'super' if they have 'super' class and it has the method
with this attribute set. This is wip. // rdar://6386358
llvm-svn: 163434
|
| |
|
|
|
|
|
|
|
| |
objc_retainAutoreleasedReturnValue, we need to also be killing
them during return peepholing. Make sure we recognize an
intervening bitcast, but more importantly, assert if we can't
find the asm marker at all. rdar://problem/12133032
llvm-svn: 163431
|
| |
|
|
| |
llvm-svn: 163430
|
| |
|
|
| |
llvm-svn: 163429
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with at least one subtle bug in MacOSXKeyChainAPIChecker where the
calling the method was a substitute for assuming a symbolic value
was null (which is not the case).
We still keep ConstraintManager::getSymVal(), but we use that as
an optimization in SValBuilder and ProgramState::getSVal() to
constant-fold SVals. This is only if the ConstraintManager can
provide us with that information, which is no longer a requirement.
As part of this, introduce a default implementation of
ConstraintManager::getSymVal() which returns null.
For Checkers, introduce ConstraintManager::isNull(), which queries
the state to see if the symbolic value is constrained to be a null
value. It does this without assuming it has been implicitly constant
folded.
llvm-svn: 163428
|
| |
|
|
|
|
| |
looking at PathPieces.
llvm-svn: 163427
|
| |
|
|
|
|
| |
comment.
llvm-svn: 163426
|
| |
|
|
| |
llvm-svn: 163425
|
| |
|
|
| |
llvm-svn: 163418
|
| |
|
|
| |
llvm-svn: 163410
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When adding the next statement to the CoreEngine's work list, we take care
of all the special cases first. We certainly shouldn't be building
PostStmts with null statements (the diagnostics machinery assumes such
StmtPoints do not exist), and we should find out sooner if we're missing
a special case.
A refinement of r163402 that should help prevent further issues like PR13760.
llvm-svn: 163409
|
| |
|
|
| |
llvm-svn: 163408
|
| |
|
|
|
|
|
| |
Don't warn when the sizeof argument is an array with the same element
type as the pointee of the return type.
llvm-svn: 163407
|
| |
|
|
|
|
| |
changes to RegionStore.
llvm-svn: 163406
|
| |
|
|
| |
llvm-svn: 163404
|
| |
|
|
| |
llvm-svn: 163403
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GCC destroys temporary objects more aggressively than clang, so this
results in incorrect behavior when compiling GCC Release builds.
We could avoid this issue under C++11 by preventing getAs from being
called when 'this' is an rvalue:
template<class ElemTy> const ElemTy *getAs() const & { ... }
template<class ElemTy> const ElemTy *getAs() const && = delete;
Unfortunately, we do not have compatibility macros for this behavior yet.
This will hopefully fix PR13760 and PR13762.
llvm-svn: 163402
|
| |
|
|
|
|
| |
within part of a particular method.
llvm-svn: 163397
|
| |
|
|
| |
llvm-svn: 163394
|
| |
|
|
| |
llvm-svn: 163389
|
| |
|
|
| |
llvm-svn: 163388
|
| |
|
|
| |
llvm-svn: 163387
|
| |
|
|
|
|
|
|
| |
This allows linking to LibASTMatchersRefernce.html#<matcher><N>Anchor to
link to the N'the declaration of a matcher and automatically expand
its documentation.
llvm-svn: 163386
|
| |
|
|
|
|
|
|
|
|
|
|
| |
class itself. This caused some confusion (intuitively, a class is not
derived from itself) and makes it hard to write certain matchers, e.g.
"match and bind any pair of base and subclass".
The original behavior can be achieved with a new isA-matcher. Similar
to all other matchers, this matcher has the same behavior and name as
the corresponding AST-entity - in this case the isa<>() function.
llvm-svn: 163385
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implements the hasAncestor matcher. This builds
on the previous patch that introduced DynTypedNode to build up
a parent map for an additional degree of freedom in the AST traversal.
The map is only built once we hit an hasAncestor matcher, in order
to not slow down matching for cases where this is not needed.
We could implement some speed-ups for special cases, like building up
the parent map as we go and only building up the full map if we break
out of the already visited part of the tree, but that is probably
not going to be worth it, and would make the code significantly more
complex.
Major TODOs are:
- implement hasParent
- implement type traversal
- implement memoization in hasAncestor
llvm-svn: 163382
|
| |
|
|
|
|
| |
Apparently the output of this test is not deterministic. Needs investigation.
llvm-svn: 163377
|
| |
|
|
|
|
|
|
|
| |
While the check itself should count 0-based for the parameter index,
the diagnostic should be 1-based (first, second, third, not start at 0).
Fixes <rdar://problem/12249569>.
llvm-svn: 163375
|
| |
|
|
|
|
|
|
| |
(as this previously was the case before this was refactored). We also shouldn't
need to specially handle BinaryOperators since the eagerly-assume heuristic tags
such nodes.
llvm-svn: 163374
|
| |
|
|
|
|
|
|
|
|
| |
of the analyzer, as the RetainReleaseChecker has many fine-grain
path diagnostic events that were not being checked. This uncovered
an inconsistency between the path diagnostics between Objective-C
and Objective-C++ code in ConditionBRVisitor that was fixed in a recent
patch.
llvm-svn: 163373
|