[clang] [LifetimeSafety] Add support for tracking non-trivially destructed temporary objects (PR #172007)
Utkarsh Saxena via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 28 03:50:01 PST 2025
================
@@ -408,6 +417,35 @@ MATCHER_P(AreLiveAt, Annotation, "") {
arg, result_listener);
}
+MATCHER_P(HasLoanToATemporary, Annotation, "") {
+ const OriginInfo &Info = arg;
+ auto &Helper = Info.Helper;
+ std::optional<OriginID> OIDOpt = Helper.getOriginForDecl(Info.OriginVar);
+ if (!OIDOpt) {
+ *result_listener << "could not find origin for '" << Info.OriginVar.str()
+ << "'";
+ return false;
+ }
+
+ std::optional<LoanSet> LoansSetOpt =
+ Helper.getLoansAtPoint(*OIDOpt, Annotation);
+ if (!LoansSetOpt) {
+ *result_listener << "could not get a valid loan set at point '"
+ << Annotation << "'";
+ return false;
+ }
+
+ std::vector<LoanID> Loans(LoansSetOpt->begin(), LoansSetOpt->end());
+
+ for (LoanID LID : Loans) {
+ if (Helper.isLoanToATemporary(LID))
+ return true;
+ }
----------------
usx95 wrote:
nit: drop the braces
https://github.com/llvm/llvm-project/pull/172007
More information about the cfe-commits
mailing list