Issue |
153594
|
Summary |
[LifetimeSafety] Track loan expiry for ParmVarDecl
|
Labels |
clang:temporal-safety
|
Assignees |
|
Reporter |
usx95
|
```cpp
#include <string>
std::string* foo(std::string a) {
const std::string* p = &a;
return p;
}
```
https://godbolt.org/z/TM3G719a4
There is no expire fact generated for `a`.
Debug output:
```
[B2 (ENTRY)]
Succs (1): B1
[B1]
1: a
2: &[B1.1]
3: [B1.2] (ImplicitCastExpr, NoOp, const std::string *)
4: const std::string *p = &a;
5: p
6: [B1.5] (ImplicitCastExpr, LValueToRValue, const std::string *)
7: return [B1.6];
Preds (1): B2
Succs (1): B0
[B0 (EXIT)]
Preds (1): B1
==========================================
Lifetime Analysis Facts:
==========================================
Function: foo
Block B2:
End of Block
Block B1:
Issue (LoanID: 0, OriginID: 0)
Issue (LoanID: 1, OriginID: 0)
AssignOrigin (DestID: 1, SrcID: 0)
AssignOrigin (DestID: 2, SrcID: 1)
AssignOrigin (DestID: 3, SrcID: 2)
ReturnOfOrigin (OriginID: 3)
End of Block
Block B0:
End of Block
Compiler returned: 0
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs