================
@@ -664,20 +664,66 @@ class LifetimeSafetySemaHelperImpl : public
LifetimeSafetySemaHelper {
return CurrExpr->getSourceRange() != LastExpr->getSourceRange();
}
+ bool shouldCarryHiddenLifetimeBound(const Expr *HiddenExpr,
----------------
iitianpushkar wrote:
AST dump for `pp = Pointer(p)`:
```cpp
|-ExprWithCleanups <line:19:5, col:19> 'Pointer<Pointer<Bar>>' lvalue
| `-CXXOperatorCallExpr <col:5, col:19> 'Pointer<Pointer<Bar>>' lvalue '='
| |-DeclRefExpr <col:5> 'Pointer<Pointer<Bar>>' lvalue Var 'pp'
| `-MaterializeTemporaryExpr <col:10, col:19> 'const Pointer<Pointer<Bar>>'
lvalue
| `-ImplicitCastExpr <col:10, col:19> 'const Pointer<Pointer<Bar>>' <NoOp>
| `-ImplicitCastExpr <col:10, col:19> 'Pointer<Pointer<Bar>>'
<ConstructorConversion>
| `-CXXConstructExpr <col:10, col:19> 'Pointer<Pointer<Bar>>' 'void
(const Pointer<Bar> &)'
| `-MaterializeTemporaryExpr <col:10, col:19> 'const Pointer<Bar>'
lvalue
| `-ImplicitCastExpr <col:10, col:19> 'const Pointer<Bar>' <NoOp>
| `-CXXFunctionalCastExpr <col:10, col:19> 'Pointer<Bar>'
functional cast to Pointer <ConstructorConversion>
| `-CXXConstructExpr <col:10, col:19> 'Pointer<Bar>' 'void
(const Pointer<Bar> &)'
| `-ImplicitCastExpr <col:18> 'const Pointer<Bar>' lvalue
<NoOp>
| `-DeclRefExpr <col:18> 'Pointer<Bar>' lvalue Var 'p'
```
The two expressions I was referring to are both visible here:
```cpp
HiddenExpr: CXXConstructExpr <col:10, col:19> ... // corresponds to Pointer(p)
LastExpr: DeclRefExpr <col:18> ... // corresponds to argument p
```
https://github.com/llvm/llvm-project/pull/206337
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits