-
Notifications
You must be signed in to change notification settings - Fork 12.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[analyzer] Fix an assertion failure if plugins added dependencies
Ideally, there is no reason behind not being able to depend on checkers that come from a different plugin (or on builtin checkers) -- however, this is only possible if all checkers are added to the registry before resolving checker dependencies. Since I used a binary search in my addDependency method, this also resulted in an assertion failure (due to CheckerRegistry::Checkers not being sorted), since the function used by plugins to register their checkers (clang_registerCheckers) calls addDependency. This patch resolves this issue by only noting which dependencies have to established when addDependency is called, and resolves them at a later stage when no more checkers are added to the registry, by which point CheckerRegistry::Checkers is already sorted. Differential Revision: https://reviews.llvm.org/D59461 llvm-svn: 358750
- Loading branch information
Kristof Umann
committed
Apr 19, 2019
1 parent
99f641c
commit cd3f147
Showing
3 changed files
with
43 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,20 @@ | ||
// RUN: %clang_analyze_cc1 %s \ | ||
// RUN: -analyzer-checker=core \ | ||
// RUN: -analyzer-checker=nullability.NullReturnedFromNonnull | ||
|
||
// RUN: %clang_analyze_cc1 %s \ | ||
// RUN: -analyzer-checker=osx.cocoa.RetainCount \ | ||
// RUN: -analyzer-list-enabled-checkers \ | ||
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-IMPLICITLY-ENABLED | ||
|
||
// CHECK-IMPLICITLY-ENABLED: osx.cocoa.RetainCountBase | ||
// CHECK-IMPLICITLY-ENABLED: osx.cocoa.RetainCount | ||
|
||
// RUN: %clang_analyze_cc1 %s \ | ||
// RUN: -analyzer-checker=osx.cocoa.RetainCount \ | ||
// RUN: -analyzer-disable-checker=osx.cocoa.RetainCountBase \ | ||
// RUN: -analyzer-list-enabled-checkers \ | ||
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-IMPLICITLY-DISABLED | ||
|
||
// CHECK-IMPLICITLY-DISABLED-NOT: osx.cocoa.RetainCountBase | ||
// CHECK-IMPLICITLY-DISABLED-NOT: osx.cocoa.RetainCount |