https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/221044
>From cff5b69c022d0e154498d352494f402e16d9010f Mon Sep 17 00:00:00 2001 From: Vitaly Buka <[email protected]> Date: Thu, 3 Sep 2026 14:47:38 -0700 Subject: [PATCH] comments Created using spr 1.3.7 --- llvm/include/llvm/Transforms/IPO/LowerTypeTests.h | 10 +++++++--- llvm/unittests/Transforms/IPO/LowerTypeTests.cpp | 6 ++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h b/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h index b35e5d6699227..b3c275001a9a7 100644 --- a/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h +++ b/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h @@ -14,6 +14,7 @@ #ifndef LLVM_TRANSFORMS_IPO_LOWERTYPETESTS_H #define LLVM_TRANSFORMS_IPO_LOWERTYPETESTS_H +#include "llvm/ADT/FunctionExtras.h" #include "llvm/ADT/STLFunctionalExtras.h" #include "llvm/ADT/SmallVector.h" #include "llvm/IR/PassManager.h" @@ -131,12 +132,15 @@ class GlobalLayoutBuilder { std::vector<uint64_t> FragmentMap; /// Optional comparator for object hotness/ordering. - function_ref<bool(uint64_t, uint64_t)> Less; + unique_function<bool(uint64_t, uint64_t)> Less; public: + /// Construct a layout builder for \p NumObjects objects. + /// If \p Less is provided, it is used to sort sub-fragments and root + /// fragments by maximum element. GlobalLayoutBuilder(uint64_t NumObjects, - function_ref<bool(uint64_t, uint64_t)> Less = nullptr) - : Fragments(1), FragmentMap(NumObjects), Less(Less) {} + unique_function<bool(uint64_t, uint64_t)> Less = nullptr) + : Fragments(1), FragmentMap(NumObjects), Less(std::move(Less)) {} /// Add F to the layout while trying to keep its indices contiguous. /// If a previously seen fragment uses any of F's indices, that diff --git a/llvm/unittests/Transforms/IPO/LowerTypeTests.cpp b/llvm/unittests/Transforms/IPO/LowerTypeTests.cpp index ad1d343fd3cb9..e3c058958a3ac 100644 --- a/llvm/unittests/Transforms/IPO/LowerTypeTests.cpp +++ b/llvm/unittests/Transforms/IPO/LowerTypeTests.cpp @@ -149,8 +149,10 @@ TEST(LowerTypeTests, GlobalLayoutBuilderHotness) { }; for (auto &&T : GLBTests) { - auto Less = [&](uint64_t A, uint64_t B) { return T.Ranks[A] < T.Ranks[B]; }; - GlobalLayoutBuilder GLB(T.NumObjects, Less); + // Pass a temporary lambda directly to verify it does not dangle. + GlobalLayoutBuilder GLB(T.NumObjects, [&](uint64_t A, uint64_t B) { + return T.Ranks[A] < T.Ranks[B]; + }); for (auto &&F : T.Fragments) GLB.addFragment(F); _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
