Skip to content

Commit 5272768

Browse files
authored
[clang-tidy][NFCI] Simplify bugprone-sizeof-expression (#93024)
This commit eliminates a redundant matcher subexpression from the implementation of the "sizeof-pointer-to-aggregate" part of the clang-tidy check `bugprone-sizeof-expression`. I'm fairly certain that anything that was previously matched by the deleted matcher `StructAddrOfExpr` is also covered by the more general `PointerToStructExpr` (which remains in the same `anyOf`). This commit is made to "prepare the ground" for a followup change that would merge the functionality of the Clang Static Analyzer checker `alpha.core.SizeofPtr` into this clang-tidy check.
1 parent a699ccb commit 5272768

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,13 @@ void SizeofExpressionCheck::registerMatchers(MatchFinder *Finder) {
144144
unaryOperator(hasUnaryOperand(ArrayExpr), unless(hasOperatorName("*"))),
145145
binaryOperator(hasEitherOperand(ArrayExpr)),
146146
castExpr(hasSourceExpression(ArrayExpr))));
147-
const auto PointerToArrayExpr = ignoringParenImpCasts(
148-
hasType(hasCanonicalType(pointerType(pointee(arrayType())))));
147+
const auto PointerToArrayExpr =
148+
hasType(hasCanonicalType(pointerType(pointee(arrayType()))));
149149

150-
const auto StructAddrOfExpr = unaryOperator(
151-
hasOperatorName("&"), hasUnaryOperand(ignoringParenImpCasts(
152-
hasType(hasCanonicalType(recordType())))));
153150
const auto PointerToStructType =
154151
hasUnqualifiedDesugaredType(pointerType(pointee(recordType())));
155-
const auto PointerToStructExpr = ignoringParenImpCasts(expr(
156-
hasType(hasCanonicalType(PointerToStructType)), unless(cxxThisExpr())));
152+
const auto PointerToStructExpr = expr(
153+
hasType(hasCanonicalType(PointerToStructType)), unless(cxxThisExpr()));
157154

158155
const auto ArrayOfPointersExpr = ignoringParenImpCasts(
159156
hasType(hasCanonicalType(arrayType(hasElementType(pointerType()))
@@ -166,18 +163,19 @@ void SizeofExpressionCheck::registerMatchers(MatchFinder *Finder) {
166163
ignoringParenImpCasts(arraySubscriptExpr(
167164
hasBase(ArrayOfSamePointersExpr), hasIndex(ZeroLiteral)));
168165
const auto ArrayLengthExprDenom =
169-
expr(hasParent(expr(ignoringParenImpCasts(binaryOperator(
170-
hasOperatorName("/"), hasLHS(ignoringParenImpCasts(sizeOfExpr(
171-
has(ArrayOfPointersExpr)))))))),
166+
expr(hasParent(binaryOperator(hasOperatorName("/"),
167+
hasLHS(ignoringParenImpCasts(sizeOfExpr(
168+
has(ArrayOfPointersExpr)))))),
172169
sizeOfExpr(has(ArrayOfSamePointersZeroSubscriptExpr)));
173170

174-
Finder->addMatcher(expr(anyOf(sizeOfExpr(has(ignoringParenImpCasts(anyOf(
175-
ArrayCastExpr, PointerToArrayExpr,
176-
StructAddrOfExpr, PointerToStructExpr)))),
177-
sizeOfExpr(has(PointerToStructType))),
178-
unless(ArrayLengthExprDenom))
179-
.bind("sizeof-pointer-to-aggregate"),
180-
this);
171+
Finder->addMatcher(
172+
expr(sizeOfExpr(anyOf(
173+
has(ignoringParenImpCasts(anyOf(
174+
ArrayCastExpr, PointerToArrayExpr, PointerToStructExpr))),
175+
has(PointerToStructType))),
176+
unless(ArrayLengthExprDenom))
177+
.bind("sizeof-pointer-to-aggregate"),
178+
this);
181179
}
182180

183181
// Detect expression like: sizeof(expr) <= k for a suspicious constant 'k'.

0 commit comments

Comments
 (0)