[clang] [Lifetime Safety] Highlight lifetimebound calls in alias chain diagnostics (PR #206337)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 13 03:29:26 PDT 2026
================
@@ -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
More information about the cfe-commits
mailing list