Issue 169014
Summary [LifetimeSafety] False-negative for return of pointer to a parameter
Labels false-negative, clang:temporal-safety
Assignees
Reporter usx95
    https://godbolt.org/z/M5v3j6W84
```cpp
#include <string>
#include <string_view>

std::string_view foo(std::string param) {
    std::string_view res = param;
    return res;
}
```
We do not see the expired loans for the param (no destructors)

```
==========================================
 Lifetime Analysis Facts:
==========================================
Function: foo
  Block B2:
  End of Block
  Block B1:
    Issue (0 (Path: param), ToOrigin: 0 (Expr: DeclRefExpr))
    OriginFlow (Dest: 1 (Expr: ImplicitCastExpr), Src: 0 (Expr: DeclRefExpr))
    OriginFlow (Dest: 2 (Expr: CXXMemberCallExpr), Src: 1 (Expr: ImplicitCastExpr))
    OriginFlow (Dest: 3 (Expr: ImplicitCastExpr), Src: 2 (Expr: CXXMemberCallExpr))
    OriginFlow (Dest: 4 (Decl: res), Src: 3 (Expr: ImplicitCastExpr))
    Use (4 (Decl: res), Read)
    OriginFlow (Dest: 5 (Expr: ImplicitCastExpr), Src: 4 (Decl: res))
    OriginFlow (Dest: 6 (Expr: CXXConstructExpr), Src: 5 (Expr: ImplicitCastExpr))
    OriginEscapes (6 (Expr: CXXConstructExpr))
  End of Block
  Block B0:
  End of Block
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to