[libcxx-commits] [libcxx] [libc++] Add _LIBCPP_NO_UNIQUE_ADDRESS to {, multi}_map::value_compare (PR #137594)

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Mon Apr 28 01:26:50 PDT 2025


https://github.com/philnik777 created https://github.com/llvm/llvm-project/pull/137594

This breaks the ABI of `flat_{,multi}map::value_compare`, but this type has only been introduced in LLVM 20, so it should be very unlikely that we break anybody if we back-port this now.


>From 0643b7775734241f9e6fee58310044a7a39b5d41 Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Mon, 28 Apr 2025 10:23:37 +0200
Subject: [PATCH] [libc++] Add _LIBCPP_NO_UNIQUE_ADDRESS to
 {,multi}_map::value_compare

---
 libcxx/include/__flat_map/flat_map.h      | 2 +-
 libcxx/include/__flat_map/flat_multimap.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libcxx/include/__flat_map/flat_map.h b/libcxx/include/__flat_map/flat_map.h
index f5abfd0985280..f5e9756ff6a60 100644
--- a/libcxx/include/__flat_map/flat_map.h
+++ b/libcxx/include/__flat_map/flat_map.h
@@ -114,7 +114,7 @@ class flat_map {
 
   class value_compare {
   private:
-    key_compare __comp_;
+    _LIBCPP_NO_UNIQUE_ADDRESS key_compare __comp_;
     _LIBCPP_HIDE_FROM_ABI value_compare(key_compare __c) : __comp_(__c) {}
     friend flat_map;
 
diff --git a/libcxx/include/__flat_map/flat_multimap.h b/libcxx/include/__flat_map/flat_multimap.h
index ea77fb5d79bd2..15fcd7995ad0a 100644
--- a/libcxx/include/__flat_map/flat_multimap.h
+++ b/libcxx/include/__flat_map/flat_multimap.h
@@ -115,7 +115,7 @@ class flat_multimap {
 
   class value_compare {
   private:
-    key_compare __comp_;
+    _LIBCPP_NO_UNIQUE_ADDRESS key_compare __comp_;
     _LIBCPP_HIDE_FROM_ABI value_compare(key_compare __c) : __comp_(__c) {}
     friend flat_multimap;
 



More information about the libcxx-commits mailing list