[libcxx-commits] [libcxx] 73cdc75 - [libc++] [test] Fix a few tests for 32-bit x86
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Mon May 31 09:36:46 PDT 2021
Author: Harald van Dijk
Date: 2021-05-31T12:38:43-04:00
New Revision: 73cdc7599bf053c3e22ce6bb15a4266f66bd5e69
URL: https://github.com/llvm/llvm-project/commit/73cdc7599bf053c3e22ce6bb15a4266f66bd5e69
DIFF: https://github.com/llvm/llvm-project/commit/73cdc7599bf053c3e22ce6bb15a4266f66bd5e69.diff
LOG: [libc++] [test] Fix a few tests for 32-bit x86
Fixes bug https://llvm.org/PR48939.
Differential Revision: https://reviews.llvm.org/D102359
Added:
Modified:
libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp
Removed:
################################################################################
diff --git a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
index 23365aa596db..2d8e9620089a 100644
--- a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
+++ b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
@@ -427,9 +427,9 @@ void multiset_test() {
void vector_test() {
std::vector<bool> test0 = {true, false};
- ComparePrettyPrintToChars(test0,
+ ComparePrettyPrintToRegex(test0,
"std::vector<bool> of "
- "length 2, capacity 64 = {1, 0}");
+ "length 2, capacity (32|64) = {1, 0}");
for (int i = 0; i < 31; ++i) {
test0.push_back(true);
test0.push_back(false);
@@ -444,9 +444,9 @@ void vector_test() {
ComparePrettyPrintToRegex(
test0,
"std::vector<bool> of length 65, "
- "capacity 128 = {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, "
- "1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, "
- "1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}");
+ "capacity (96|128) = {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, "
+ "0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, "
+ "0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}");
std::vector<int> test1;
ComparePrettyPrintToChars(test1, "std::vector of length 0, capacity 0");
diff --git a/libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp b/libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
index b4bc4f8f9349..8b9e7303b6e8 100644
--- a/libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
+++ b/libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
@@ -48,7 +48,11 @@ int main(int, char**) {
//
// With trivial_abi, local_addr is the address of a local variable in
// make_val, and hence
diff erent from &ret.
+#if !defined(__i386__)
+ // On X86, structs are never returned in registers.
+ // Thus, unique_ptr will be passed indirectly even if it is trivial.
assert((void*)&ret != local_addr);
+#endif
return 0;
}
diff --git a/libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp b/libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp
index b61b0f6b468a..2da9dd3aea7c 100644
--- a/libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp
+++ b/libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp
@@ -51,9 +51,10 @@ int main(int, char**) {
//
// With trivial_abi, local_addr is the address of a local variable in
// make_val, and hence
diff erent from &ret.
-#ifndef __arm__
+#if !defined(__i386__) && !defined(__arm__)
+ // On X86, structs are never returned in registers.
// On ARM32, structs larger than 4 bytes cannot be returned in registers.
- // Thus, weak_ptr will be passed indrectly even if it is trivial.
+ // Thus, weak_ptr will be passed indirectly even if it is trivial.
assert((void*)&ret != local_addr);
#endif
return 0;
More information about the libcxx-commits
mailing list