[libcxx-commits] [libcxx] [libc++][test] Fix size calculation for `unordered_map` in ABI test (PR #157006)

A. Jiang via libcxx-commits libcxx-commits at lists.llvm.org
Thu Sep 4 22:51:36 PDT 2025


https://github.com/frederick-vs-ja updated https://github.com/llvm/llvm-project/pull/157006

>From a7c90dcbad7be180df479498c78bfde445adf112 Mon Sep 17 00:00:00 2001
From: "A. Jiang" <de34 at live.cn>
Date: Fri, 5 Sep 2025 11:24:57 +0800
Subject: [PATCH] [libc++][test] Fix size calculation for `unordered_map` in
 ABI test

Currently,
`libcxx\test\libcxx\containers\associative\unord.map\abi.compile.pass.cpp`
consistently fails for 32-bit platforms. There's an off-by-4 size
calculation error for some `unordered_map` specializations, possibly due
to mistakenly ignoring some data member.
---
 .../containers/associative/unord.map/abi.compile.pass.cpp   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libcxx/test/libcxx/containers/associative/unord.map/abi.compile.pass.cpp b/libcxx/test/libcxx/containers/associative/unord.map/abi.compile.pass.cpp
index 39fc9fe94a83c..a9fafe0452ac3 100644
--- a/libcxx/test/libcxx/containers/associative/unord.map/abi.compile.pass.cpp
+++ b/libcxx/test/libcxx/containers/associative/unord.map/abi.compile.pass.cpp
@@ -209,9 +209,9 @@ static_assert(TEST_ALIGNOF(unordered_map_alloc<char, final_small_iter_allocator<
               "");
 
 static_assert(sizeof(std::unordered_map<int, int, FinalHash, UnalignedEqualTo>) == 24, "");
-static_assert(sizeof(std::unordered_map<int, int, FinalHash, FinalEqualTo>) == 24, "");
-static_assert(sizeof(std::unordered_map<int, int, NonEmptyHash, FinalEqualTo>) == 28, "");
-static_assert(sizeof(std::unordered_map<int, int, NonEmptyHash, NonEmptyEqualTo>) == 32, "");
+static_assert(sizeof(std::unordered_map<int, int, FinalHash, FinalEqualTo>) == 28, "");
+static_assert(sizeof(std::unordered_map<int, int, NonEmptyHash, FinalEqualTo>) == 32, "");
+static_assert(sizeof(std::unordered_map<int, int, NonEmptyHash, NonEmptyEqualTo>) == 36, "");
 
 static_assert(TEST_ALIGNOF(std::unordered_map<int, int, FinalHash, UnalignedEqualTo>) == 4, "");
 static_assert(TEST_ALIGNOF(std::unordered_map<int, int, FinalHash, FinalEqualTo>) == 4, "");



More information about the libcxx-commits mailing list