================
@@ -201,11 +201,40 @@ void UninitializedObjectChecker::checkEndFunction(
BT_uninitField, WarningOS.str(), Node, LocUsedForUniqueing,
Node->getStackFrame()->getDecl());
- for (const auto &Pair : UninitFields) {
- Report->addNote(Pair.second,
- PathDiagnosticLocation::create(Pair.first->getDecl(),
-
Context.getSourceManager()));
+ using NoteTy = std::pair<PathDiagnosticLocation, StringRef>;
+ SmallVector<NoteTy> Notes;
+ const auto &SM = Context.getSourceManager();
+ for (const auto &[FieldRegion, NoteMsg] : UninitFields) {
+ auto FieldLoc = PathDiagnosticLocation::create(FieldRegion->getDecl(), SM);
+ Notes.emplace_back(FieldLoc, NoteMsg);
}
+
+ // Make the order deterministic.
+ llvm::sort(Notes, [](const NoteTy &LHS, const NoteTy &RHS) {
+ FullSourceLoc L = LHS.first.asLocation();
+ FullSourceLoc R = RHS.first.asLocation();
+ if (L != R)
+ return L.isBeforeInTranslationUnitThan(R);
+ // Comparing the field locs might not be enough:
----------------
necto wrote:
Note this comment is incomplete, it is missing the `Inner` definition. At the
same time it is rather long already, perhaps you could summarize it in a couple
of sentences and refer to the test case for details?
https://github.com/llvm/llvm-project/pull/214208
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits