Author: Harald van Dijk Date: 2021-06-04T20:31:25-07:00 New Revision: f1b1151b61b19391b083ced5d4b0b710ada07f6c
URL: https://github.com/llvm/llvm-project/commit/f1b1151b61b19391b083ced5d4b0b710ada07f6c DIFF: https://github.com/llvm/llvm-project/commit/f1b1151b61b19391b083ced5d4b0b710ada07f6c.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 (cherry picked from commit 73cdc7599bf053c3e22ce6bb15a4266f66bd5e69) 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 fed6a1618483..cf560ce31097 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 73fe18becc3a..5cda71371fa6 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 @@ -46,7 +46,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 e69c94506f2a..9b4e95e249e2 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 @@ -49,9 +49,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; _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
