mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 15:13:49 -04:00
[ORC] fix use-after-free detected by -Wreturn-stack-address
Summary:
llvm/lib/ExecutionEngine/Orc/Layer.cpp:53:12: warning: returning address of local temporary object [-Wreturn-stack-address]
In
```
StringRef IRMaterializationUnit::getName() const {
[...]
return TSM.withModuleDo(
[](const Module &M) { return M.getModuleIdentifier(); });
```
`getModuleIdentifier()` returns a `const std::string &`, but the implicit return type
of the lambda is `std::string` by value, and thus the returned `StringRef` refers
to a temporary `std::string`.
Detect by annotating `llvm::StringRef` with `[[gsl::Pointer]]`.
Reviewers: lhames, sgraenitz
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66440
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369306 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -51,7 +51,7 @@ IRMaterializationUnit::IRMaterializationUnit(
|
||||
StringRef IRMaterializationUnit::getName() const {
|
||||
if (TSM)
|
||||
return TSM.withModuleDo(
|
||||
[](const Module &M) { return M.getModuleIdentifier(); });
|
||||
[](const Module &M) -> StringRef { return M.getModuleIdentifier(); });
|
||||
return "<null module>";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user