[clang] [WebKit Checkers] Trivial analysis should check destructors of function parameters and local variables (PR #181576)
Ryosuke Niwa via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 16 12:54:23 PST 2026
================
@@ -542,6 +546,49 @@ class TrivialFunctionAnalysisVisitor
});
}
+ bool HasTrivialDestructor(const VarDecl *VD) {
+ return WithCachedResult(VD, [&]() {
+ auto QT = VD->getType();
+ if (QT.isPODType(VD->getASTContext()))
+ return true;
+ auto *Type = QT.getTypePtrOrNull();
+ if (!Type)
+ return false;
+ const CXXRecordDecl *R = Type->getAsCXXRecordDecl();
+ if (!R) {
+ if (isa<LValueReferenceType>(Type))
+ return true; // T& does not run its destructor.
+ if (auto *RT = dyn_cast<RValueReferenceType>(Type)) {
+ // For T&&, we evaluate the destructor of T.
+ QT = RT->getPointeeType();
+ Type = QT.getTypePtrOrNull();
+ if (!Type)
+ return false;
+ R = Type->getAsCXXRecordDecl();
+ }
+ }
+ if (!R) {
+ if (auto *AT = dyn_cast<ConstantArrayType>(Type)) {
+ QT = AT->getElementType();
+ Type = QT.getTypePtrOrNull();
----------------
rniwa wrote:
Fixed!
https://github.com/llvm/llvm-project/pull/181576
More information about the cfe-commits
mailing list