=?utf-8?q?Kristóf?= Umann <dkszelet...@gmail.com>, =?utf-8?q?Kristóf?= Umann <dkszelet...@gmail.com>, =?utf-8?q?Kristóf?= Umann <dkszelet...@gmail.com> Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/94...@github.com>
================ @@ -696,6 +730,69 @@ struct StreamOperationEvaluator { } // end anonymous namespace +//===----------------------------------------------------------------------===// +// Definition of NoStreamStateChangeVisitor. +//===----------------------------------------------------------------------===// + +namespace { +class NoStreamStateChangeVisitor final : public NoOwnershipChangeVisitor { +protected: + /// Syntactically checks whether the callee is a freeing function. Since + /// we have no path-sensitive information on this call (we would need a + /// CallEvent instead of a CallExpr for that), its possible that a + /// freeing function was called indirectly through a function pointer, + /// but we are not able to tell, so this is a best effort analysis. + bool isFreeingCallAsWritten(const CallExpr &Call) const { ---------------- steakhal wrote: I'd suggest refining the comment and the function name to reflect that by "freeing" we actually mean "closing" the file. https://github.com/llvm/llvm-project/pull/94957 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits