================
@@ -807,6 +786,19 @@ void FactsGenerator::handleLifetimeEnds(const
CFGLifetimeEnds &LifetimeEnds) {
ExpiredOID));
}
+void FactsGenerator::handleCleanupFunction(
+ const CFGCleanupFunction &CleanupFunction) {
+ // A variable with __attribute__((cleanup(fn))) has fn(&var) called at scope
+ // exit; like a non-trivial destructor, that callback may read a borrow the
+ // variable holds, so model it as a use of the variable.
+ const VarDecl *VD = CleanupFunction.getVarDecl();
+ if (!VD || !hasOrigins(VD->getType()))
----------------
Xazax-hun wrote:
This is tricky, a cleanup function is taking the object by address, so it can
do anything with it, e.g., reading any fields. So it should be considered a use
even if it is an owner.
https://github.com/llvm/llvm-project/pull/204650
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits