<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/clang/lib/StaticAnalyzer/Checkers/MPI-Checker, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-09-09T20:34:40+00:00</updated>
<entry>
<title>[analyzer] NFC: Introduce sub-classes for path-sensitive and basic reports.</title>
<updated>2019-09-09T20:34:40+00:00</updated>
<author>
<name>Artem Dergachev</name>
<email>artem.dergachev@gmail.com</email>
</author>
<published>2019-09-09T20:34:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2f169e7cdd9973d2aa4cba6b0a09126a5e7268ec'/>
<id>urn:sha1:2f169e7cdd9973d2aa4cba6b0a09126a5e7268ec</id>
<content type='text'>
Checkers are now required to specify whether they're creating a
path-sensitive report or a path-insensitive report by constructing an
object of the respective type.

This makes BugReporter more independent from the rest of the Static Analyzer
because all Analyzer-specific code is now in sub-classes.

Differential Revision: https://reviews.llvm.org/D66572

llvm-svn: 371450
</content>
</entry>
<entry>
<title>[analyzer] Fix analyzer warnings on analyzer.</title>
<updated>2019-08-28T18:44:38+00:00</updated>
<author>
<name>Artem Dergachev</name>
<email>artem.dergachev@gmail.com</email>
</author>
<published>2019-08-28T18:44:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=630f7daf80fe36d3aa4a9ebe60e7abefae514bba'/>
<id>urn:sha1:630f7daf80fe36d3aa4a9ebe60e7abefae514bba</id>
<content type='text'>
Write tests for the actual crash that was found. Write comments and refactor
code around 17 style bugs and suppress 3 false positives.

Differential Revision: https://reviews.llvm.org/D66847

llvm-svn: 370246
</content>
</entry>
<entry>
<title>[Clang] Migrate llvm::make_unique to std::make_unique</title>
<updated>2019-08-14T23:04:18+00:00</updated>
<author>
<name>Jonas Devlieghere</name>
<email>jonas@devlieghere.com</email>
</author>
<published>2019-08-14T23:04:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2b3d49b610bd2a45884115edcb21110bfa325f51'/>
<id>urn:sha1:2b3d49b610bd2a45884115edcb21110bfa325f51</id>
<content type='text'>
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.

Differential revision: https://reviews.llvm.org/D66259

llvm-svn: 368942
</content>
</entry>
<entry>
<title>[analyzer][NFC] Refactoring BugReporter.cpp P3.: std::shared_pointer&lt;PathDiagnosticPiece&gt; -&gt; PathDiagnosticPieceRef</title>
<updated>2019-08-13T16:45:48+00:00</updated>
<author>
<name>Kristof Umann</name>
<email>dkszelethus@gmail.com</email>
</author>
<published>2019-08-13T16:45:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=6d716ef1814bea126dcdb761eb2482abb9c44f39'/>
<id>urn:sha1:6d716ef1814bea126dcdb761eb2482abb9c44f39</id>
<content type='text'>
find clang/ -type f -exec sed -i 's/std::shared_ptr&lt;PathDiagnosticPiece&gt;/PathDiagnosticPieceRef/g' {} \;
git diff -U3 --no-color HEAD^ | clang-format-diff-6.0 -p1 -i

Just as C++ is meant to be refactored, right?

Differential Revision: https://reviews.llvm.org/D65381

llvm-svn: 368717
</content>
</entry>
<entry>
<title>[analyzer] Supply all checkers with a shouldRegister function</title>
<updated>2019-01-26T14:23:08+00:00</updated>
<author>
<name>Kristof Umann</name>
<email>dkszelethus@gmail.com</email>
</author>
<published>2019-01-26T14:23:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=058a7a450aac183d28451191333b3eb33814f62a'/>
<id>urn:sha1:058a7a450aac183d28451191333b3eb33814f62a</id>
<content type='text'>
Introduce the boolean ento::shouldRegister##CHECKERNAME(const LangOptions &amp;LO)
function very similarly to ento::register##CHECKERNAME. This will force every
checker to implement this function, but maybe it isn't that bad: I saw a lot of
ObjC or C++ specific checkers that should probably not register themselves based
on some LangOptions (mine too), but they do anyways.

A big benefit of this is that all registry functions now register their checker,
once it is called, registration is guaranteed.

This patch is a part of a greater effort to reinvent checker registration, more
info here: D54438#1315953

Differential Revision: https://reviews.llvm.org/D55424

llvm-svn: 352277
</content>
</entry>
<entry>
<title>Update the file headers across all of the LLVM projects in the monorepo</title>
<updated>2019-01-19T08:50:56+00:00</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2019-01-19T08:50:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2946cd701067404b99c39fb29dc9c74bd7193eb3'/>
<id>urn:sha1:2946cd701067404b99c39fb29dc9c74bd7193eb3</id>
<content type='text'>
to reflect the new license.

We understand that people may be surprised that we're moving the header
entirely to discuss the new license. We checked this carefully with the
Foundation's lawyer and we believe this is the correct approach.

Essentially, all code in the project is now made available by the LLVM
project under our new license, so you will see that the license headers
include that license only. Some of our contributors have contributed
code under our old license, and accordingly, we have retained a copy of
our old license notice in the top-level files in each project and
repository.

llvm-svn: 351636
</content>
</entry>
<entry>
<title>[analyzer][NFC] Move CheckerRegistry from the Core directory to Frontend</title>
<updated>2018-12-15T16:23:51+00:00</updated>
<author>
<name>Kristof Umann</name>
<email>dkszelethus@gmail.com</email>
</author>
<published>2018-12-15T16:23:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=76a21502fdc12366cdda4fe92b2dbdfe7661064a'/>
<id>urn:sha1:76a21502fdc12366cdda4fe92b2dbdfe7661064a</id>
<content type='text'>
ClangCheckerRegistry is a very non-obvious, poorly documented, weird concept.
It derives from CheckerRegistry, and is placed in lib/StaticAnalyzer/Frontend,
whereas it's base is located in lib/StaticAnalyzer/Core. It was, from what I can
imagine, used to circumvent the problem that the registry functions of the
checkers are located in the clangStaticAnalyzerCheckers library, but that
library depends on clangStaticAnalyzerCore. However, clangStaticAnalyzerFrontend
depends on both of those libraries.

One can make the observation however, that CheckerRegistry has no place in Core,
it isn't used there at all! The only place where it is used is Frontend, which
is where it ultimately belongs.

This move implies that since
include/clang/StaticAnalyzer/Checkers/ClangCheckers.h only contained a single function:

class CheckerRegistry;

void registerBuiltinCheckers(CheckerRegistry &amp;registry);

it had to re purposed, as CheckerRegistry is no longer available to
clangStaticAnalyzerCheckers. It was renamed to BuiltinCheckerRegistration.h,
which actually describes it a lot better -- it does not contain the registration
functions for checkers, but only those generated by the tblgen files.

Differential Revision: https://reviews.llvm.org/D54436

llvm-svn: 349275
</content>
</entry>
<entry>
<title>[analyzer] Fix the "Zombie Symbols" bug.</title>
<updated>2018-11-30T03:27:50+00:00</updated>
<author>
<name>Artem Dergachev</name>
<email>artem.dergachev@gmail.com</email>
</author>
<published>2018-11-30T03:27:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=bbc6d68297c8b0641eb8226dea7746a0d97ae33b'/>
<id>urn:sha1:bbc6d68297c8b0641eb8226dea7746a0d97ae33b</id>
<content type='text'>
It's an old bug that consists in stale references to symbols remaining in the
GDM if they disappear from other program state sections as a result of any
operation that isn't the actual dead symbol collection. The most common example
here is:

   FILE *fp = fopen("myfile.txt", "w");
   fp = 0; // leak of file descriptor

In this example the leak were not detected previously because the symbol
disappears from the public part of the program state due to evaluating
the assignment. For that reason the checker never receives a notification
that the symbol is dead, and never reports a leak.

This patch not only causes leak false negatives, but also a number of other
problems, including false positives on some checkers.

What's worse, even though the program state contains a finite number of symbols,
the set of symbols that dies is potentially infinite. This means that is
impossible to compute the set of all dead symbols to pass off to the checkers
for cleaning up their part of the GDM.

No longer compute the dead set at all. Disallow iterating over dead symbols.
Disallow querying if any symbols are dead. Remove the API for marking symbols
as dead, as it is no longer necessary. Update checkers accordingly.

Differential Revision: https://reviews.llvm.org/D18860

llvm-svn: 347953
</content>
</entry>
<entry>
<title>[analyzer] [NFC] Remove unused parameters, as found by -Wunused-parameter</title>
<updated>2018-09-28T18:49:41+00:00</updated>
<author>
<name>George Karpenkov</name>
<email>ekarpenkov@apple.com</email>
</author>
<published>2018-09-28T18:49:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=c82d457db53256a5721980d03e7ab19a00c92a9c'/>
<id>urn:sha1:c82d457db53256a5721980d03e7ab19a00c92a9c</id>
<content type='text'>
Differential Revision: https://reviews.llvm.org/D52640

llvm-svn: 343353
</content>
</entry>
<entry>
<title>[analyzer] Do not run visitors until the fixpoint, run only once.</title>
<updated>2018-06-26T21:12:08+00:00</updated>
<author>
<name>George Karpenkov</name>
<email>ekarpenkov@apple.com</email>
</author>
<published>2018-06-26T21:12:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=70ec1dd14d66a088be290908d2985652b4863892'/>
<id>urn:sha1:70ec1dd14d66a088be290908d2985652b4863892</id>
<content type='text'>
In the current implementation, we run visitors until the fixed point is
reached.
That is, if a visitor adds another visitor, the currently processed path
is destroyed, all diagnostics is discarded, and it is regenerated again,
until it's no longer modified.
This pattern has a few negative implications:

 - This loop does not even guarantee to terminate.
   E.g. just imagine two visitors bouncing a diagnostics around.
 - Performance-wise, e.g. for sqlite3 all visitors are being re-run at
   least 10 times for some bugs.
   We have already seen a few reports where it leads to timeouts.
 - If we want to add more computationally intense visitors, this will
   become worse.
 - From architectural standpoint, the current layout requires copying
   visitors, which is conceptually wrong, and can be annoying (e.g. no
   unique_ptr on visitors allowed).

The proposed change is a much simpler architecture: the outer loop
processes nodes upwards, and whenever the visitor is added it only
processes current nodes and above, thus guaranteeing termination.

Differential Revision: https://reviews.llvm.org/D47856

llvm-svn: 335666
</content>
</entry>
</feed>
