llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-static-analyzer-1

Author: Discookie (Discookie)

<details>
<summary>Changes</summary>

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 whie analyzing LLVM.

---
Full diff: https://github.com/llvm/llvm-project/pull/70638.diff


1 Files Affected:

- (modified) clang/lib/StaticAnalyzer/Checkers/CXXDeleteChecker.cpp (+6) 


``````````diff
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;
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/70638
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to