[clang] [analyzer] Fix double space in generateMinimalDiagForBlockEdge emitted notes (PR #228777)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 3 14:39:19 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
@llvm/pr-subscribers-clang-static-analyzer-1
Author: Benedek Kaibas (benedekaibas)
<details>
<summary>Changes</summary>
`generateMinimalDiagForBlockEdge` currently has double spaces for loop condition notes. It was introduced in https://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20080407/005074.html. There is no comment in the commit or doc comment that it is intentional. Also other emitted notes in the same function use a single space. This issue came up in #<!-- -->228045
While fixing this issue I have also went through the comments in the `BugReporter.cpp` and fixed some typos.
---
Full diff: https://github.com/llvm/llvm-project/pull/228777.diff
8 Files Affected:
- (modified) clang/lib/StaticAnalyzer/Core/BugReporter.cpp (+7-7)
- (modified) clang/test/Analysis/dangling-ptr-deref.cpp (+1-1)
- (modified) clang/test/Analysis/diagnostics/track_subexpressions.cpp (+2-2)
- (modified) clang/test/Analysis/loop-widening-notes.cpp (+4-4)
- (modified) clang/test/Analysis/loop-widening.cpp (+2-2)
- (modified) clang/test/Analysis/return-ptr-range.cpp (+2-2)
- (modified) clang/test/Analysis/track-control-dependency-conditions.cpp (+3-3)
- (modified) clang/test/Analysis/use-after-move.cpp (+12-12)
``````````diff
diff --git a/clang/lib/StaticAnalyzer/Core/BugReporter.cpp b/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
index 25d10df604bda..0b994c446c96b 100644
--- a/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
+++ b/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
@@ -98,7 +98,7 @@ void BugReporterContext::anchor() {}
namespace {
-/// A (CallPiece, node assiciated with its CallEnter) pair.
+/// A (CallPiece, node associated with its CallEnter) pair.
using CallWithEntry =
std::pair<PathDiagnosticCallPiece *, const ExplodedNode *>;
using CallWithEntryStack = SmallVector<CallWithEntry, 6>;
@@ -972,7 +972,7 @@ void PathDiagnosticBuilder::generateMinimalDiagForBlockEdge(
C.getActivePath().push_front(
std::make_shared<PathDiagnosticControlFlowPiece>(
- Start, End, "Loop condition is false. Exiting loop"));
+ Start, End, "Loop condition is false. Exiting loop"));
}
break;
@@ -996,7 +996,7 @@ void PathDiagnosticBuilder::generateMinimalDiagForBlockEdge(
C.getActivePath().push_front(
std::make_shared<PathDiagnosticControlFlowPiece>(
- Start, End, "Loop condition is true. Entering loop body"));
+ Start, End, "Loop condition is true. Entering loop body"));
}
break;
@@ -2257,7 +2257,7 @@ static void insertToInterestingnessMap(
// Even if this symbol/region was already marked as interesting as a
// condition, if we later mark it as interesting again but with
// thorough tracking, overwrite it. Entities marked with thorough
- // interestiness are the most important (or most interesting, if you will),
+ // interestingness are the most important (or most interesting, if you will),
// and we wouldn't like to downplay their importance.
switch (TKind) {
@@ -2343,7 +2343,7 @@ PathSensitiveBugReport::getInterestingnessKind(SVal V) const {
if (!SKind)
return RKind;
- // If either is marked with throrough tracking, return that, we wouldn't like
+ // If either is marked with thorough tracking, return that, we wouldn't like
// to downplay a note's importance by 'only' mentioning it as a condition.
switch(*RKind) {
case bugreporter::TrackingKind::Thorough:
@@ -2728,7 +2728,7 @@ BugPathInfo *BugPathGetter::getNextBugPath() {
}
/// CompactMacroExpandedPieces - This function postprocesses a PathDiagnostic
-/// object and collapses PathDiagosticPieces that are expanded by macros.
+/// object and collapses PathDiagnosticPieces that are expanded by macros.
static void CompactMacroExpandedPieces(PathPieces &path,
const SourceManager& SM) {
using MacroStackTy = std::vector<
@@ -2984,7 +2984,7 @@ void BugReporter::emitReport(std::unique_ptr<BugReport> R) {
llvm::FoldingSetNodeID ID;
R->Profile(ID);
- // Lookup the equivance class. If there isn't one, create it.
+ // Lookup the equivalence class. If there isn't one, create it.
llvm::FoldingSetInsertToken InsertToken;
BugReportEquivClass *EQ = EQClasses.lookup(ID, InsertToken);
diff --git a/clang/test/Analysis/dangling-ptr-deref.cpp b/clang/test/Analysis/dangling-ptr-deref.cpp
index 8572b6416f150..1c026b5528921 100644
--- a/clang/test/Analysis/dangling-ptr-deref.cpp
+++ b/clang/test/Analysis/dangling-ptr-deref.cpp
@@ -72,7 +72,7 @@ void test_case_six() {
void test_case_seven() {
int *ptr = nullptr;
- // expected-note at +3 {{Loop condition is true. Entering loop body}}
+ // expected-note at +3 {{Loop condition is true. Entering loop body}}
// expected-note at +2 {{Assuming 'i' is >= 10}}
// expected-note at +1 {{Loop condition is false. Execution continues on line}}
for (int i = 0; i < 10; ++i) { // expected-note {{'i' initialized to 0}}
diff --git a/clang/test/Analysis/diagnostics/track_subexpressions.cpp b/clang/test/Analysis/diagnostics/track_subexpressions.cpp
index c61738ce7b136..76cf9e3e24285 100644
--- a/clang/test/Analysis/diagnostics/track_subexpressions.cpp
+++ b/clang/test/Analysis/diagnostics/track_subexpressions.cpp
@@ -37,7 +37,7 @@ void testArrayIndexTracking() {
int arr[10];
for (int i = 0; i < 3; ++i)
- // expected-note at -1 3{{Loop condition is true. Entering loop body}}
+ // expected-note at -1 3{{Loop condition is true. Entering loop body}}
// expected-note at -2 {{Loop condition is false. Execution continues on line 43}}
arr[i] = 0;
int x = getInt();
@@ -69,7 +69,7 @@ void testArrayIndexTracking() {
int arr[2][10];
for (int i = 0; i < 3; ++i)
- // expected-note at -1 3{{Loop condition is true. Entering loop body}}
+ // expected-note at -1 3{{Loop condition is true. Entering loop body}}
// expected-note at -2 {{Loop condition is false. Execution continues on line 75}}
arr[1][i] = 0;
int x = getInt();
diff --git a/clang/test/Analysis/loop-widening-notes.cpp b/clang/test/Analysis/loop-widening-notes.cpp
index a3f030dfe9882..7bd61fe0db4d0 100644
--- a/clang/test/Analysis/loop-widening-notes.cpp
+++ b/clang/test/Analysis/loop-widening-notes.cpp
@@ -7,7 +7,7 @@ int test_for_bug_25609() {
if (p_a == 0) // expected-note {{Assuming 'p_a' is equal to null}}
// expected-note at -1 {{Taking true branch}}
bar();
- for (int i = 0; // expected-note {{Loop condition is true. Entering loop body}}
+ for (int i = 0; // expected-note {{Loop condition is true. Entering loop body}}
// expected-note at -1 {{Loop condition is false. Execution continues on line 16}}
++i, // expected-note {{Value assigned to 'p_a'}}
i < flag_a;
@@ -22,7 +22,7 @@ int flag_b;
int while_analyzer_output() {
flag_b = 100;
int num = 10;
- while (flag_b-- > 0) { // expected-note {{Loop condition is true. Entering loop body}}
+ while (flag_b-- > 0) { // expected-note {{Loop condition is true. Entering loop body}}
// expected-note at -1 {{Value assigned to 'num'}}
// expected-note at -2 {{Loop condition is false. Execution continues on line 30}}
num = flag_b;
@@ -43,7 +43,7 @@ int flag_c;
int do_while_analyzer_output() {
int num = 10;
do { // expected-note {{Loop condition is true. Execution continues on line 47}}
- // expected-note at -1 {{Loop condition is false. Exiting loop}}
+ // expected-note at -1 {{Loop condition is false. Exiting loop}}
num--;
} while (flag_c-- > 0); //expected-note {{Value assigned to 'num'}}
int local = 0;
@@ -57,7 +57,7 @@ int do_while_analyzer_output() {
int flag_d;
int test_for_loop() {
int num = 10;
- for (int i = 0; // expected-note {{Loop condition is true. Entering loop body}}
+ for (int i = 0; // expected-note {{Loop condition is true. Entering loop body}}
// expected-note at -1 {{Loop condition is false. Execution continues on line 67}}
new int(10), // expected-note {{Value assigned to 'num'}}
i < flag_d;
diff --git a/clang/test/Analysis/loop-widening.cpp b/clang/test/Analysis/loop-widening.cpp
index fbcb72dee160a..fa8e9c2f3d696 100644
--- a/clang/test/Analysis/loop-widening.cpp
+++ b/clang/test/Analysis/loop-widening.cpp
@@ -14,8 +14,8 @@ void fn1() {
A a;
A *b = &a;
- for (;;) { // expected-note{{Loop condition is true. Entering loop body}}
- // expected-note at -1{{Loop condition is true. Entering loop body}}
+ for (;;) { // expected-note{{Loop condition is true. Entering loop body}}
+ // expected-note at -1{{Loop condition is true. Entering loop body}}
// expected-note at -2{{Value assigned to 'b'}}
// no crash during bug report construction
diff --git a/clang/test/Analysis/return-ptr-range.cpp b/clang/test/Analysis/return-ptr-range.cpp
index 507720a47ea7d..53612174897c7 100644
--- a/clang/test/Analysis/return-ptr-range.cpp
+++ b/clang/test/Analysis/return-ptr-range.cpp
@@ -8,7 +8,7 @@ int arr[10]; // expected-note{{Original object declared here}} expected-note{{Or
int *ptr;
int *test_global_ptr() {
- do { // expected-note{{Loop condition is false. Exiting loop}}
+ do { // expected-note{{Loop condition is false. Exiting loop}}
int x = conjure_index();
ptr = arr + x; // expected-note{{Value assigned to 'ptr'}}
if (x != 20) // expected-note{{Assuming 'x' is equal to 20}}
@@ -22,7 +22,7 @@ int *test_global_ptr() {
int *test_local_ptr() {
int *local_ptr;
- do { // expected-note{{Loop condition is false. Exiting loop}}
+ do { // expected-note{{Loop condition is false. Exiting loop}}
int x = conjure_index();
local_ptr = arr + x; // expected-note{{Value assigned to 'local_ptr'}}
if (x != 20) // expected-note{{Assuming 'x' is equal to 20}}
diff --git a/clang/test/Analysis/track-control-dependency-conditions.cpp b/clang/test/Analysis/track-control-dependency-conditions.cpp
index b762992b6a8f0..76f9641729de5 100644
--- a/clang/test/Analysis/track-control-dependency-conditions.cpp
+++ b/clang/test/Analysis/track-control-dependency-conditions.cpp
@@ -858,7 +858,7 @@ void f(int flag) {
bar();
assert(cond1); // expected-note-re{{{{^}}Assuming 'cond1' is not equal to 0{{$}}}}
// expected-note-re at -1{{{{^}}Taking false branch{{$}}}}
- // expected-note-re at -2{{{{^}}Loop condition is false. Exiting loop{{$}}}}
+ // expected-note-re at -2{{{{^}}Loop condition is false. Exiting loop{{$}}}}
if (flag) // expected-note-re{{{{^}}Assuming 'flag' is not equal to 0{{$}}}}
// expected-note-re at -1{{{{^}}Taking true branch{{$}}}}
@@ -902,7 +902,7 @@ void f(int flag) {
// expected-note-re at -2{{{{^}}Left side of '&&' is true{{$}}}}
// expected-note-re at -3{{{{^}}Assuming the condition is false{{$}}}}
// expected-note-re at -4{{{{^}}Taking false branch{{$}}}}
- // expected-note-re at -5{{{{^}}Loop condition is false. Exiting loop{{$}}}}
+ // expected-note-re at -5{{{{^}}Loop condition is false. Exiting loop{{$}}}}
if (flag) // expected-note-re{{{{^}}Assuming 'flag' is not equal to 0{{$}}}}
// expected-note-re at -1{{{{^}}Taking true branch{{$}}}}
@@ -945,7 +945,7 @@ void f(int flag) {
// expected-note-re at -1{{{{^}}Assuming 'cond1' is not equal to 0{{$}}}}
// expected-note-re at -2{{{{^}}Left side of '||' is true{{$}}}}
// expected-note-re at -3{{{{^}}Taking false branch{{$}}}}
- // expected-note-re at -4{{{{^}}Loop condition is false. Exiting loop{{$}}}}
+ // expected-note-re at -4{{{{^}}Loop condition is false. Exiting loop{{$}}}}
if (flag) // expected-note-re{{{{^}}Assuming 'flag' is not equal to 0{{$}}}}
// expected-note-re at -1{{{{^}}Taking true branch{{$}}}}
diff --git a/clang/test/Analysis/use-after-move.cpp b/clang/test/Analysis/use-after-move.cpp
index fa7893c9a21c8..a123c41c651e6 100644
--- a/clang/test/Analysis/use-after-move.cpp
+++ b/clang/test/Analysis/use-after-move.cpp
@@ -303,8 +303,8 @@ void loopTest() {
}
{
A a;
- for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
- // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
+ for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
+ // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
// peaceful-note at -2 {{Loop condition is false. Execution jumps to the end of the function}}
rightRefCall(std::move(a)); // no-warning
}
@@ -317,8 +317,8 @@ void loopTest() {
}
{
A a;
- for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
- // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
+ for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
+ // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
// peaceful-note at -2 {{Loop condition is false. Execution jumps to the end of the function}}
leftRefCall(a); // no-warning
}
@@ -331,8 +331,8 @@ void loopTest() {
}
{
A a;
- for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
- // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
+ for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
+ // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
// peaceful-note at -2 {{Loop condition is false. Execution jumps to the end of the function}}
constCopyOrMoveCall(a); // no-warning
}
@@ -345,8 +345,8 @@ void loopTest() {
}
{
A a;
- for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
- // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
+ for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
+ // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
// peaceful-note at -2 {{Loop condition is false. Execution jumps to the end of the function}}
moveInsideFunctionCall(a); // no-warning
}
@@ -359,16 +359,16 @@ void loopTest() {
}
{
A a;
- for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
- // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
+ for (int i = 0; i < 2; i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
+ // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
// peaceful-note at -2 {{Loop condition is false. Execution jumps to the end of the function}}
copyOrMoveCall(a); // no-warning
}
}
{
A a;
- for (int i = 0; i < bignum(); i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
- // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
+ for (int i = 0; i < bignum(); i++) { // peaceful-note {{Loop condition is true. Entering loop body}}
+ // peaceful-note at -1 {{Loop condition is true. Entering loop body}}
constCopyOrMoveCall(std::move(a)); // peaceful-note {{Object 'a' is moved}}
// peaceful-warning at -1 {{Moved-from object 'a' is moved}}
// peaceful-note at -2 {{Moved-from object 'a' is moved}}
``````````
</details>
https://github.com/llvm/llvm-project/pull/228777
More information about the cfe-commits
mailing list