https://github.com/NagyDonat updated 
https://github.com/llvm/llvm-project/pull/95550

From 06adc063c2388ea534537f5a417751fdf64b22cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Don=C3=A1t=20Nagy?= <donat.n...@ericsson.com>
Date: Fri, 14 Jun 2024 15:16:34 +0200
Subject: [PATCH 1/3] [clang-tidy] Clarify diagnostics of
 bugprone-sizeof-expression

...becasue they were strangely worded and in a few cases outright
incorrect.
---
 .../bugprone/SizeofExpressionCheck.cpp        | 22 ++---
 .../checkers/bugprone/sizeof-expression-2.c   | 12 +--
 .../sizeof-expression-any-pointer.cpp         | 86 +++++++++----------
 ...on-warn-on-sizeof-pointer-to-aggregate.cpp |  4 +-
 .../checkers/bugprone/sizeof-expression.cpp   | 84 +++++++++---------
 5 files changed, 105 insertions(+), 103 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
index c25ee42d0899a..3afa0e5c39882 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
@@ -296,7 +296,7 @@ void SizeofExpressionCheck::check(const 
MatchFinder::MatchResult &Result) {
   } else if (const auto *E =
                  Result.Nodes.getNodeAs<Expr>("sizeof-integer-call")) {
     diag(E->getBeginLoc(), "suspicious usage of 'sizeof()' on an expression "
-                           "that results in an integer")
+                           "of integer type")
         << E->getSourceRange();
   } else if (const auto *E = Result.Nodes.getNodeAs<Expr>("sizeof-this")) {
     diag(E->getBeginLoc(),
@@ -314,7 +314,7 @@ void SizeofExpressionCheck::check(const 
MatchFinder::MatchResult &Result) {
           << E->getSourceRange();
     } else {
       diag(E->getBeginLoc(), "suspicious usage of 'sizeof()' on an expression "
-                             "that results in a pointer")
+                             "of pointer type")
           << E->getSourceRange();
     }
   } else if (const auto *E = Result.Nodes.getNodeAs<BinaryOperator>(
@@ -342,31 +342,33 @@ void SizeofExpressionCheck::check(const 
MatchFinder::MatchResult &Result) {
 
     if (DenominatorSize > CharUnits::Zero() &&
         !NumeratorSize.isMultipleOf(DenominatorSize)) {
-      diag(E->getOperatorLoc(), "suspicious usage of 
'sizeof(...)/sizeof(...)';"
+      diag(E->getOperatorLoc(), "suspicious usage of 
'sizeof(...)/sizeof(...)':"
                                 " numerator is not a multiple of denominator")
           << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
     } else if (ElementSize > CharUnits::Zero() &&
                DenominatorSize > CharUnits::Zero() &&
                ElementSize != DenominatorSize) {
-      diag(E->getOperatorLoc(), "suspicious usage of 
'sizeof(...)/sizeof(...)';"
-                                " numerator is not a multiple of denominator")
+      diag(E->getOperatorLoc(),
+           "suspicious usage of 'sizeof(array)/sizeof(...)':"
+           " denominator differs from the size of array elements")
           << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
     } else if (NumTy && DenomTy && NumTy == DenomTy) {
-      // FIXME: This message is wrong, it should not refer to sizeof "pointer"
-      // usage (and by the way, it would be to clarify all the messages).
       diag(E->getOperatorLoc(),
-           "suspicious usage of sizeof pointer 'sizeof(T)/sizeof(T)'")
+           "suspicious usage of 'sizeof(...)/sizeof(...)': both expressions "
+           "have the same type")
           << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
     } else if (!WarnOnSizeOfPointer) {
       // When 'WarnOnSizeOfPointer' is enabled, these messages become 
redundant:
       if (PointedTy && DenomTy && PointedTy == DenomTy) {
         diag(E->getOperatorLoc(),
-             "suspicious usage of sizeof pointer 'sizeof(T*)/sizeof(T)'")
+             "suspicious usage of 'sizeof(...)/sizeof(...)': size of pointer "
+             "is divided by size of pointed type")
             << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
       } else if (NumTy && DenomTy && NumTy->isPointerType() &&
                  DenomTy->isPointerType()) {
         diag(E->getOperatorLoc(),
-             "suspicious usage of sizeof pointer 'sizeof(P*)/sizeof(Q*)'")
+             "suspicious usage of 'sizeof(...)/sizeof(...)': both expressions "
+             "have pointer types")
             << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
       }
     }
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-2.c 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-2.c
index aef930f2c8fda..b898071a56613 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-2.c
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-2.c
@@ -34,24 +34,24 @@ int Test5() {
 
   int sum = 0;
   sum += sizeof(&S);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(__typeof(&S));
   sum += sizeof(&TS);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(__typeof(&TS));
   sum += sizeof(STRKWD MyStruct*);
   sum += sizeof(__typeof(STRKWD MyStruct*));
   sum += sizeof(TypedefStruct*);
   sum += sizeof(__typeof(TypedefStruct*));
   sum += sizeof(PTTS);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PMyStruct);
   sum += sizeof(PS);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PS2);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&A10);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 
 #ifdef __cplusplus
   MyStruct &rS = S;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
index bfb2ec3a9eb02..37df21b6e0743 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
@@ -38,17 +38,17 @@ int Test1(const char* ptr) {
   sum += sizeof(sum, LEN);
   // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(..., ...)'
   sum += sizeof(AsBool());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(AsInt());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(AsEnum());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(AsEnumClass());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(M{}.AsInt());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(M{}.AsEnum());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(sizeof(X));
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(sizeof(...))'
   sum += sizeof(LEN + sizeof(X));
@@ -62,31 +62,31 @@ int Test1(const char* ptr) {
   sum += sizeof(LEN + - + -sizeof(X));
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(sizeof(...))'
   sum += sizeof(char) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   sum += sizeof(A) / sizeof(S);
-  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(int);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(B[0]) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(ptr) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(ptr) / sizeof(ptr[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(ptr) / sizeof(char*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(ptr) / sizeof(void*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(ptr) / sizeof(const void volatile*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(ptr) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(int) * sizeof(char);
   // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious 'sizeof' by 'sizeof' 
multiplication
   sum += sizeof(ptr) * sizeof(ptr[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   // CHECK-MESSAGES: :[[@LINE-2]]:22: warning: suspicious 'sizeof' by 'sizeof' 
multiplication
   sum += sizeof(int) * (2 * sizeof(char));
   // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious 'sizeof' by 'sizeof' 
multiplication
@@ -127,54 +127,54 @@ int Test5() {
 
   int sum = 0;
   sum += sizeof(&S.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&kGlocalMyStruct.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&kGlocalMyStructPtr->arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(S.arr + 0);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(+ S.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof((int*)S.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 
   sum += sizeof(S.ptr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(kGlocalMyStruct.ptr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(kGlocalMyStructPtr->ptr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 
   sum += sizeof(&kGlocalMyStruct);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&S);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(MyStruct*);
   sum += sizeof(PMyStruct);
   sum += sizeof(PS);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PS2);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&A10);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PtrArray) / sizeof(PtrArray[1]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(A10) / sizeof(PtrArray[0]);
   sum += sizeof(PC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
-  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
+  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   sum += sizeof(ArrayC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
 
   sum += sizeof(PChar);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PInt);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PPInt);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PPMyStruct);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 
   return sum;
 }
@@ -200,9 +200,9 @@ void GenericFunctionTest() {
   // reported by the `sizeof(pointer)` checks, but this causes some false
   // positives, so it would be good to create an exception for them.
   some_generic_function(&IntPP, sizeof(IntP));
-  // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   some_generic_function(&ClassPP, sizeof(ClassP));
-  // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 }
 
 int ValidExpressions() {
@@ -222,7 +222,7 @@ int ValidExpressions() {
   sum += sizeof(A[sizeof(A) / sizeof(int)]);
   // Here the outer sizeof is reported, but the inner ones are accepted:
   sum += sizeof(&A[sizeof(A) / sizeof(int)]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(sizeof(0));  // Special case: sizeof size_t.
   sum += sizeof(void*);
   sum += sizeof(void const *);
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
index 5ef2c46ffbdf1..ed1dd06c8dc1d 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
@@ -68,9 +68,9 @@ int Test5() {
   sum += sizeof(A10) / sizeof(PtrArray[0]);
   // No warning.
   sum += sizeof(PC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   sum += sizeof(ArrayC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
 
   return sum;
 }
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp
index 064f31cb08c6b..fedcd32af63b8 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp
@@ -48,13 +48,13 @@ bool TestTrait2() {
 template <class T>
 bool TestTrait3() {
   return sizeof(ReturnOverload(0)) == sizeof(T{});
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
 }
 
 template <class T>
 bool TestTrait4() {
   return sizeof(ReturnTemplate(0)) == sizeof(T{});
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
 }
 
 bool TestTemplates() {
@@ -79,17 +79,17 @@ int Test1(const char* ptr) {
   sum += sizeof(sum, LEN);
   // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(..., ...)'
   sum += sizeof(AsBool());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(AsInt());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(AsEnum());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(AsEnumClass());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(M{}.AsInt());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(M{}.AsEnum());
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in an integer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of integer type
   sum += sizeof(sizeof(X));
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(sizeof(...))'
   sum += sizeof(LEN + sizeof(X));
@@ -103,27 +103,27 @@ int Test1(const char* ptr) {
   sum += sizeof(LEN + - + -sizeof(X));
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(sizeof(...))'
   sum += sizeof(char) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   sum += sizeof(A) / sizeof(S);
-  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(int);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(B[0]) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
   sum += sizeof(ptr) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of sizeof 
pointer 'sizeof(T*)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': size of pointer is divided by size of pointed type
   sum += sizeof(ptr) / sizeof(ptr[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of sizeof 
pointer 'sizeof(T*)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': size of pointer is divided by size of pointed type
   sum += sizeof(ptr) / sizeof(char*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of sizeof 
pointer 'sizeof(P*)/sizeof(Q*)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have pointer types
   sum += sizeof(ptr) / sizeof(void*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of sizeof 
pointer 'sizeof(P*)/sizeof(Q*)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have pointer types
   sum += sizeof(ptr) / sizeof(const void volatile*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of sizeof 
pointer 'sizeof(P*)/sizeof(Q*)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have pointer types
   sum += sizeof(ptr) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of sizeof 
pointer 'sizeof(T*)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': size of pointer is divided by size of pointed type
   sum += sizeof(int) * sizeof(char);
   // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious 'sizeof' by 'sizeof' 
multiplication
   sum += sizeof(ptr) * sizeof(ptr[0]);
@@ -156,11 +156,11 @@ int CE4 = sizeof sizeof(MyConstChar);
 int Test2(MyConstChar* A) {
   int sum = 0;
   sum += sizeof(MyConstChar) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   sum += sizeof(MyConstChar) / sizeof(MyChar);
-  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   sum += sizeof(A[0]) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   return sum;
 }
 
@@ -169,7 +169,7 @@ int Foo() { int A[T]; return sizeof(T); }
 // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 'sizeof(K)'
 template <typename T>
 int Bar() { T A[5]; return sizeof(A[0]) / sizeof(T); }
-// CHECK-MESSAGES: :[[@LINE-1]]:41: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+// CHECK-MESSAGES: :[[@LINE-1]]:41: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
 int Test3() { return Foo<42>() + Bar<char>(); }
 
 static const char* kABC = "abc";
@@ -211,45 +211,45 @@ int Test5() {
 
   int sum = 0;
   sum += sizeof(&S.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&kGlocalMyStruct.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&kGlocalMyStructPtr->arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(S.arr + 0);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(+ S.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof((int*)S.arr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 
   sum += sizeof(S.ptr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(kGlocalMyStruct.ptr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(kGlocalMyStructPtr->ptr);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 
   sum += sizeof(&kGlocalMyStruct);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&S);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(MyStruct*);
   sum += sizeof(PMyStruct);
   sum += sizeof(PS);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PS2);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(&A10);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(PtrArray) / sizeof(PtrArray[1]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(A10) / sizeof(PtrArray[0]);
   sum += sizeof(PC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
-  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of sizeof 
pointer 'sizeof(T)/sizeof(T)'
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
+  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
   sum += sizeof(ArrayC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
 
   // These pointers do not point to aggregate types, so they are not reported 
in this mode:
   sum += sizeof(PChar);
@@ -321,7 +321,7 @@ void GenericFunctionTest() {
   // NOTE: `sizeof(IntP)` is only reported with `WarnOnSizeOfPointer=true`.
   some_generic_function(&IntPP, sizeof(IntP));
   some_generic_function(&ClassPP, sizeof(ClassP));
-  // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: suspicious usage of 'sizeof()' 
on an expression that results in a pointer
+  // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
 }
 
 int ValidExpressions() {

From 51373e4d0d88865ab262094f8af2a2e7cd2f0f9e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Don=C3=A1t=20Nagy?= <donat.n...@ericsson.com>
Date: Thu, 20 Jun 2024 16:33:39 +0200
Subject: [PATCH 2/3] Return to using semicolons in the messages

---
 .../bugprone/SizeofExpressionCheck.cpp        | 10 +++---
 .../sizeof-expression-any-pointer.cpp         | 14 ++++----
 ...on-warn-on-sizeof-pointer-to-aggregate.cpp |  4 +--
 .../checkers/bugprone/sizeof-expression.cpp   | 34 +++++++++----------
 4 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
index 3afa0e5c39882..db8659d5a4241 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
@@ -342,32 +342,32 @@ void SizeofExpressionCheck::check(const 
MatchFinder::MatchResult &Result) {
 
     if (DenominatorSize > CharUnits::Zero() &&
         !NumeratorSize.isMultipleOf(DenominatorSize)) {
-      diag(E->getOperatorLoc(), "suspicious usage of 
'sizeof(...)/sizeof(...)':"
+      diag(E->getOperatorLoc(), "suspicious usage of 
'sizeof(...)/sizeof(...)';"
                                 " numerator is not a multiple of denominator")
           << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
     } else if (ElementSize > CharUnits::Zero() &&
                DenominatorSize > CharUnits::Zero() &&
                ElementSize != DenominatorSize) {
       diag(E->getOperatorLoc(),
-           "suspicious usage of 'sizeof(array)/sizeof(...)':"
+           "suspicious usage of 'sizeof(array)/sizeof(...)';"
            " denominator differs from the size of array elements")
           << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
     } else if (NumTy && DenomTy && NumTy == DenomTy) {
       diag(E->getOperatorLoc(),
-           "suspicious usage of 'sizeof(...)/sizeof(...)': both expressions "
+           "suspicious usage of 'sizeof(...)/sizeof(...)'; both expressions "
            "have the same type")
           << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
     } else if (!WarnOnSizeOfPointer) {
       // When 'WarnOnSizeOfPointer' is enabled, these messages become 
redundant:
       if (PointedTy && DenomTy && PointedTy == DenomTy) {
         diag(E->getOperatorLoc(),
-             "suspicious usage of 'sizeof(...)/sizeof(...)': size of pointer "
+             "suspicious usage of 'sizeof(...)/sizeof(...)'; size of pointer "
              "is divided by size of pointed type")
             << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
       } else if (NumTy && DenomTy && NumTy->isPointerType() &&
                  DenomTy->isPointerType()) {
         diag(E->getOperatorLoc(),
-             "suspicious usage of 'sizeof(...)/sizeof(...)': both expressions "
+             "suspicious usage of 'sizeof(...)/sizeof(...)'; both expressions "
              "have pointer types")
             << E->getLHS()->getSourceRange() << E->getRHS()->getSourceRange();
       }
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
index 37df21b6e0743..4c65d253baefd 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-any-pointer.cpp
@@ -62,15 +62,15 @@ int Test1(const char* ptr) {
   sum += sizeof(LEN + - + -sizeof(X));
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(sizeof(...))'
   sum += sizeof(char) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   sum += sizeof(A) / sizeof(S);
-  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(int);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(B[0]) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(ptr) / sizeof(char);
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
   sum += sizeof(ptr) / sizeof(ptr[0]);
@@ -163,9 +163,9 @@ int Test5() {
   sum += sizeof(A10) / sizeof(PtrArray[0]);
   sum += sizeof(PC) / sizeof(PtrArray[0]);
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
-  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   sum += sizeof(ArrayC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
 
   sum += sizeof(PChar);
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
index ed1dd06c8dc1d..5c6b728efcee9 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression-warn-on-sizeof-pointer-to-aggregate.cpp
@@ -68,9 +68,9 @@ int Test5() {
   sum += sizeof(A10) / sizeof(PtrArray[0]);
   // No warning.
   sum += sizeof(PC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   sum += sizeof(ArrayC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
 
   return sum;
 }
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp
index fedcd32af63b8..671fd8370894f 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp
@@ -103,27 +103,27 @@ int Test1(const char* ptr) {
   sum += sizeof(LEN + - + -sizeof(X));
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(sizeof(...))'
   sum += sizeof(char) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   sum += sizeof(A) / sizeof(S);
-  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(int);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(char) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(B[0]) / sizeof(A);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
   sum += sizeof(ptr) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': size of pointer is divided by size of pointed type
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; size of pointer is divided by size of pointed type
   sum += sizeof(ptr) / sizeof(ptr[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': size of pointer is divided by size of pointed type
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; size of pointer is divided by size of pointed type
   sum += sizeof(ptr) / sizeof(char*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have pointer types
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have pointer types
   sum += sizeof(ptr) / sizeof(void*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have pointer types
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have pointer types
   sum += sizeof(ptr) / sizeof(const void volatile*);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have pointer types
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have pointer types
   sum += sizeof(ptr) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': size of pointer is divided by size of pointed type
+  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; size of pointer is divided by size of pointed type
   sum += sizeof(int) * sizeof(char);
   // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious 'sizeof' by 'sizeof' 
multiplication
   sum += sizeof(ptr) * sizeof(ptr[0]);
@@ -156,11 +156,11 @@ int CE4 = sizeof sizeof(MyConstChar);
 int Test2(MyConstChar* A) {
   int sum = 0;
   sum += sizeof(MyConstChar) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   sum += sizeof(MyConstChar) / sizeof(MyChar);
-  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   sum += sizeof(A[0]) / sizeof(char);
-  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   return sum;
 }
 
@@ -169,7 +169,7 @@ int Foo() { int A[T]; return sizeof(T); }
 // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: suspicious usage of 'sizeof(K)'
 template <typename T>
 int Bar() { T A[5]; return sizeof(A[0]) / sizeof(T); }
-// CHECK-MESSAGES: :[[@LINE-1]]:41: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+// CHECK-MESSAGES: :[[@LINE-1]]:41: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
 int Test3() { return Foo<42>() + Bar<char>(); }
 
 static const char* kABC = "abc";
@@ -247,9 +247,9 @@ int Test5() {
   sum += sizeof(A10) / sizeof(PtrArray[0]);
   sum += sizeof(PC) / sizeof(PtrArray[0]);
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 'sizeof()' 
on an expression of pointer type
-  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': both expressions have the same type
+  // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; both expressions have the same type
   sum += sizeof(ArrayC) / sizeof(PtrArray[0]);
-  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)': numerator is not a multiple of denominator
+  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: suspicious usage of 
'sizeof(...)/sizeof(...)'; numerator is not a multiple of denominator
 
   // These pointers do not point to aggregate types, so they are not reported 
in this mode:
   sum += sizeof(PChar);

From dd18d9f8daef7fc312ccd0113ad571a3d69ac131 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Don=C3=A1t=20Nagy?= <donat.n...@ericsson.com>
Date: Thu, 20 Jun 2024 16:35:52 +0200
Subject: [PATCH 3/3] Add a FIXME

---
 clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
index db8659d5a4241..d517e8473d94a 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
@@ -348,6 +348,7 @@ void SizeofExpressionCheck::check(const 
MatchFinder::MatchResult &Result) {
     } else if (ElementSize > CharUnits::Zero() &&
                DenominatorSize > CharUnits::Zero() &&
                ElementSize != DenominatorSize) {
+      // FIXME: Apparently there are no testcases that cover this branch!
       diag(E->getOperatorLoc(),
            "suspicious usage of 'sizeof(array)/sizeof(...)';"
            " denominator differs from the size of array elements")

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to