================
@@ -353,6 +367,19 @@ void SizeofExpressionCheck::check(const
MatchFinder::MatchResult &Result) {
diag(E->getBeginLoc(),
"suspicious usage of 'sizeof(char*)'; do you mean 'strlen'?")
<< E->getSourceRange();
+ } else if (const auto *E = Result.Nodes.getNodeAs<Stmt>("loop-expr")) {
+ auto *SizeofArgTy = Result.Nodes.getNodeAs<Type>("sizeof-arg-type");
+ if (const auto member = dyn_cast<MemberPointerType>(SizeofArgTy)) {
+ SizeofArgTy = member->getPointeeType().getTypePtr();
+ }
+
+ if (const auto type = dyn_cast<ArrayType>(SizeofArgTy)) {
+ CharUnits sSize = Ctx.getTypeSizeInChars(type->getElementType());
+ if (!sSize.isOne()) {
+ diag(E->getBeginLoc(), "suspicious usage of 'sizeof' in the loop")
+ << E->getSourceRange();
----------------
vbvictor wrote:
Do we need this line? I think this argument is never printed because we don't
have `%0` is message
https://github.com/llvm/llvm-project/pull/143205
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits