[llvm] 7ecdf62 - [MCA] use std::function instead of function_ref when storing (#91039)
via llvm-commits
llvm-commits at lists.llvm.org
Mon May 20 14:51:21 PDT 2024
Author: Aiden Grossman
Date: 2024-05-20T14:51:17-07:00
New Revision: 7ecdf620330d8e044a48b6f59f8eddd2f88f01d4
URL: https://github.com/llvm/llvm-project/commit/7ecdf620330d8e044a48b6f59f8eddd2f88f01d4
DIFF: https://github.com/llvm/llvm-project/commit/7ecdf620330d8e044a48b6f59f8eddd2f88f01d4.diff
LOG: [MCA] use std::function instead of function_ref when storing (#91039)
This patch changes uses of llvm::function_ref for std::function when
storing the callback inside of a class. The LLVM Programmer's manual
mentions that llvm::function_ref is not safe to store as it contains
pointers to external memory that are not guaranteed to exist in the
future when it is stored.
This causes issues when setting callbacks inside of a class that manages
MCA state. Passing a lambda directly to the set callback functions will
end up causing UB/segfaults when the lambda is called as some external
memory is now invalid. This is easy to work around (create a separate
std::function, pass that into the function setting the callback), but
isn't ideal.
Added:
Modified:
llvm/include/llvm/MCA/IncrementalSourceMgr.h
llvm/include/llvm/MCA/InstrBuilder.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/MCA/IncrementalSourceMgr.h b/llvm/include/llvm/MCA/IncrementalSourceMgr.h
index d53f1138b9405..81f9b51cf42f0 100644
--- a/llvm/include/llvm/MCA/IncrementalSourceMgr.h
+++ b/llvm/include/llvm/MCA/IncrementalSourceMgr.h
@@ -41,7 +41,7 @@ class IncrementalSourceMgr : public SourceMgr {
bool EOS = false;
/// Called when an instruction is no longer needed.
- using InstFreedCallback = llvm::function_ref<void(Instruction *)>;
+ using InstFreedCallback = std::function<void(Instruction *)>;
InstFreedCallback InstFreedCB;
public:
diff --git a/llvm/include/llvm/MCA/InstrBuilder.h b/llvm/include/llvm/MCA/InstrBuilder.h
index c8619af04b330..3594372489148 100644
--- a/llvm/include/llvm/MCA/InstrBuilder.h
+++ b/llvm/include/llvm/MCA/InstrBuilder.h
@@ -79,8 +79,7 @@ class InstrBuilder {
bool FirstCallInst;
bool FirstReturnInst;
- using InstRecycleCallback =
- llvm::function_ref<Instruction *(const InstrDesc &)>;
+ using InstRecycleCallback = std::function<Instruction *(const InstrDesc &)>;
InstRecycleCallback InstRecycleCB;
Expected<const InstrDesc &>
More information about the llvm-commits
mailing list