HomePhabricator

[ORC] fix use-after-free detected by -Wreturn-stack-address

Authored by mgehre on Aug 19 2019, 2:59 PM.

Description

[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

llvm-svn: 369306