| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 212804
|
|
|
|
|
|
| |
msc17.
llvm-svn: 212789
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
denominator.
This new checker, alpha.core.TestAfterDivZero, catches issues like this:
int sum = ...
int avg = sum / count; // potential division by zero...
if (count == 0) { ... } // ...caught here
Because the analyzer does not necessarily explore /all/ paths through a program,
this check is restricted to only work on zero checks that immediately follow a
division operation (/ % /= %=). This could later be expanded to handle checks
dominated by a division operation but not necessarily in the same CFG block.
Patch by Anders Rönnholm! (with very minor modifications by me)
llvm-svn: 212731
|
|
|
|
| |
llvm-svn: 212516
|
|
|
|
| |
llvm-svn: 212453
|
|
|
|
|
|
|
| |
ExprEngine wasn't ready for SEHLeaveStmtClass. Handle it like all the
other SEH constructs by aborting.
llvm-svn: 212436
|
|
|
|
| |
llvm-svn: 212396
|
|
|
|
| |
llvm-svn: 212394
|
|
|
|
|
|
| |
Switch over LogDiagnosticPrinter and introduce an integer helper.
llvm-svn: 212384
|
|
|
|
| |
llvm-svn: 212369
|
|
|
|
| |
llvm-svn: 211987
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This silences false positives (leaks, use of uninitialized value) in simple
code that uses containers such as std::vector and std::list. The analyzer
cannot reason about the internal invariances of those data structures which
leads to false positives. Until we come up with a better solution to that
problem, let's just not inline the methods of the containers and allow objects
to escape whenever such methods are called.
This just extends an already existing flag "c++-container-inlining" and applies
the heuristic not only to constructors and destructors of the containers, but
to all of their methods.
We have a bunch of distinct user reports all related to this issue
(radar://16058651, radar://16580751, radar://16384286, radar://16795491
[PR19637]).
llvm-svn: 211832
|
|
|
|
| |
llvm-svn: 211774
|
|
|
|
| |
llvm-svn: 211767
|
|
|
|
| |
llvm-svn: 211685
|
|
|
|
|
|
| |
Merely a code simplification, no functionality change.
llvm-svn: 211484
|
|
|
|
|
|
| |
Patch by Sean McBride, tests adjusted by me.
llvm-svn: 211453
|
|
|
|
|
|
|
|
| |
Doing this caused us to mistakenly think we'd seen a particular state before
when we actually hadn't, which resulted in false negatives. Credit to
Rafael Auler for discovering this issue!
llvm-svn: 211209
|
|
|
|
|
|
| |
MSVC).
llvm-svn: 211140
|
|
|
|
|
|
|
|
| |
This reverts commit r211096. Looks like it broke the msvc build:
SemaOpenMP.cpp(140) : error C4519: default template arguments are only allowed on a class template
llvm-svn: 211113
|
|
|
|
| |
llvm-svn: 211096
|
|
|
|
|
|
| |
Use stringstream instead to convert int to string
llvm-svn: 210972
|
|
|
|
| |
llvm-svn: 210971
|
|
|
|
|
|
|
|
| |
instead of report-XXXXXX.html, scan-build/clang analyzer generate
report-<filename>-<function, method name>-<function position>-<id>.html.
(id = i++ for several issues found in the same function/method)
llvm-svn: 210970
|
|
|
|
|
|
|
|
|
| |
Fixes a crash in Retain Count checker error reporting logic by handing
the allocation statement retrieval from a BlockEdge program point.
Also added a simple CFG dump routine for debugging.
llvm-svn: 210960
|
|
|
|
| |
llvm-svn: 210780
|
|
|
|
|
|
|
| |
will never be true in a well-defined context. The checking for null pointers
has been moved into the caller logic so it does not rely on undefined behavior.
llvm-svn: 210498
|
|
|
|
| |
llvm-svn: 210075
|
|
|
|
|
|
| |
be performed by using Decl::isInStdNamespace or DeclContext::isStdNamespace
llvm-svn: 209708
|
|
|
|
| |
llvm-svn: 209642
|
|
|
|
|
|
| |
Depends on http://reviews.llvm.org/D3762
llvm-svn: 209527
|
|
|
|
| |
llvm-svn: 209526
|
|
|
|
|
|
|
| |
Based on a patch by jfcaron3@gmail.com!
PR19806
llvm-svn: 209215
|
|
|
|
| |
llvm-svn: 208838
|
|
|
|
| |
llvm-svn: 208491
|
|
|
|
| |
llvm-svn: 208473
|
|
|
|
|
|
|
| |
Required pulling LambdaExpr::Capture into its own header.
No functionality change.
llvm-svn: 208470
|
|
|
|
|
|
| |
Found by LSan.
llvm-svn: 208251
|
|
|
|
|
|
| |
Follow-up to Nico's leak-stopping patch in r208110.
llvm-svn: 208155
|
|
|
|
|
|
|
|
|
| |
This applies to __attribute__((pure)) as well, but 'const' is more interesting
because many of our builtins are marked 'const'.
PR19661
llvm-svn: 208154
|
|
|
|
|
|
|
|
| |
BugReport doesn't take ownership of the bug type, so let the checker own the
the bug type. (Requires making the bug type mutable, which is icky, but which
is also what other checkers do.)
llvm-svn: 208110
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
condition blocks.
Document and simplify ResolveCondition.
1. Introduce a temporary special case for temporary desctructors when resolving
the branch condition - in an upcoming patch, alexmc will change temporary
destructor conditions to not run through this logic, in which case we can remove
this (marked as FIXME); this currently fixes a crash.
2. Simplify ResolveCondition; while documenting the function, I noticed that it
always returns the last statement - either that statement is the condition
itself (in which case the condition was returned anyway), or the rightmost
leaf is returned; for correctness, the rightmost leaf must be evaluated anyway
(which the CFG does in the last statement), thus we can just return the last
statement in that case, too. Added an assert to verify the invariant.
llvm-svn: 207957
|
|
|
|
|
|
|
|
| |
a std::vector that allocates on the heap. As a consequence, we have to
run all of their destructors when tearing down the set, not just
deallocate the memory blobs.
llvm-svn: 207902
|
|
|
|
|
|
| |
range accessor in addition to the iterators. Updated code using iterators to use range-based for loops.
llvm-svn: 207837
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While we don't model pointer-to-member operators yet (neither .* nor ->*),
CallAndMessageChecker still checks to make sure the 'this' object is not
null or undefined first. However, it also expects that the object should
always have a valid MemRegion, something that's generally important elsewhere
in the analyzer as well. Ensure this is true ahead of time, just like we do
for member access.
PR19531
llvm-svn: 207561
|
|
|
|
|
|
|
|
|
|
| |
variable.
This could happen due to unfortunate CFG coincidences.
PR19579
llvm-svn: 207486
|
|
|
|
|
|
| |
PR19524
llvm-svn: 207001
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Fixes massive performance problems on large translation units.
Reviewers: jordan_rose
Reviewed By: jordan_rose
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D3471
llvm-svn: 206999
|
|
|
|
|
|
|
|
|
|
| |
definition below all of the header #include lines, clang edition.
If you want more details about this, you can see some of the commits to
Debug.h in LLVM recently. This is just the clang section of a cleanup
I've done for all uses of DEBUG_TYPE in LLVM.
llvm-svn: 206849
|
|
|
|
| |
llvm-svn: 205828
|