Author: Discookie Date: 2023-10-30T14:03:33Z New Revision: 564e0165abc851dcd7a3485d4e728ce63c3d6466
URL: https://github.com/llvm/llvm-project/commit/564e0165abc851dcd7a3485d4e728ce63c3d6466 DIFF: https://github.com/llvm/llvm-project/commit/564e0165abc851dcd7a3485d4e728ce63c3d6466.diff LOG: [clang][analyzer] Do not analyze opaque types in CXXDeleteChecker (#70638) While inheritance can only be expressed if the class has a definition, in this case one of the types might be opaque to the analyzer. Fixes a crash encountered while analyzing LLVM. Added: Modified: clang/lib/StaticAnalyzer/Checkers/CXXDeleteChecker.cpp Removed: ################################################################################ diff --git a/clang/lib/StaticAnalyzer/Checkers/CXXDeleteChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CXXDeleteChecker.cpp index 1a1f5c530294038..eb265f4dde68bc2 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CXXDeleteChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CXXDeleteChecker.cpp @@ -114,6 +114,9 @@ void DeleteWithNonVirtualDtorChecker::checkTypedDeleteExpr( if (!BaseClass || !DerivedClass) return; + if (!BaseClass->hasDefinition() || !DerivedClass->hasDefinition()) + return; + if (BaseClass->getDestructor()->isVirtual()) return; @@ -148,6 +151,9 @@ void CXXArrayDeleteChecker::checkTypedDeleteExpr( if (!BaseClass || !DerivedClass) return; + if (!BaseClass->hasDefinition() || !DerivedClass->hasDefinition()) + return; + if (DE->getOperatorDelete()->getOverloadedOperator() != OO_Array_Delete) return; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits