OSDN Git Service

Disable trivial weak_ptr test on ARM because it is not expected to work.
authorVy Nguyen <vyng@google.com>
Mon, 20 Jul 2020 20:59:46 +0000 (16:59 -0400)
committerVy Nguyen <vyng@google.com>
Mon, 20 Jul 2020 21:02:49 +0000 (17:02 -0400)
Summary:
weak_ptr has two pointers (more than the 4 bytes limit), so it will not be returned in registers on ARM, even if it is trivial.
The test, therefore, will fail on ARM.

Reviewers: #libc!

Subscribers: kristof.beyls, danielkiss, libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D84200

libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp

index 4ecec86..e69c945 100644 (file)
@@ -49,7 +49,10 @@ int main(int, char**) {
   //
   // With trivial_abi, local_addr is the address of a local variable in
   // make_val, and hence different from &ret.
+#ifndef __arm__
+  // On ARM32, structs larger than 4 bytes cannot be returned in registers.
+  // Thus, weak_ptr will be passed indrectly even if it is trivial.
   assert((void*)&ret != local_addr);
-
+#endif
   return 0;
 }