[llvm-branch-commits] [llvm] [NFC][LowerTypeTests] Support ordering in GlobalLayoutBuilder with Less comparator (PR #221044)
Vitaly Buka via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Sep 3 16:58:13 PDT 2026
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 <vitalybuka at google.com>
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);
More information about the llvm-branch-commits
mailing list