================
@@ -1103,6 +1094,8 @@ shouldLifetimeExtendThroughPath(const IndirectLocalPath 
&Path) {
   for (auto Elem : Path) {
     if (Elem.Kind == IndirectLocalPathEntry::DefaultInit)
       return PathLifetimeKind::Extend;
+    if (Elem.Kind == IndirectLocalPathEntry::MemberExpr)
+      continue;
----------------
hokein wrote:

This is necessary for the standard lifetime extension case. Since we add a new 
`MemberExpr` to the path, we need to skip it to maintain the existing behavior; 
otherwise, cases like `const int &x = A().i;` would incorrectly trigger 
diagnostics.

The case `const Bar& bar = foo.v.back();` is already handled on Line 1186.  

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

Reply via email to