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 --- a/libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp +++ b/libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp @@ -6,8 +6,6 @@ // //===----------------------------------------------------------------------===// -// XFAIL: LIBCXX-AIX-FIXME - // // Test unique_ptr with trivial_abi as return-type. @@ -47,8 +45,9 @@ // // With trivial_abi, local_addr is the address of a local variable in // make_val, and hence different from &ret. -#if !defined(__i386__) && !defined(_WIN32) +#if !defined(__i386__) && !defined(_WIN32) && !defined(_AIX) // On X86, structs are never returned in registers. + // On AIX, structs are never returned in registers. // Thus, unique_ptr will be passed indirectly even if it is trivial. // On Windows, structs with a destructor are always returned indirectly. assert((void*)&ret != local_addr); 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 --- a/libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp +++ b/libcxx/test/libcxx/memory/trivial_abi/weak_ptr_ret.pass.cpp @@ -13,7 +13,6 @@ // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI // XFAIL: gcc -// XFAIL: LIBCXX-AIX-FIXME #include #include @@ -49,8 +48,9 @@ // // With trivial_abi, local_addr is the address of a local variable in // make_val, and hence different from &ret. -#if !defined(__i386__) && !defined(__arm__) && !defined(_WIN32) +#if !defined(__i386__) && !defined(__arm__) && !defined(_WIN32) && !defined(_AIX) // On X86, structs are never returned in registers. + // On AIX, structs are never returned in registers. // On ARM32, structs larger than 4 bytes cannot be returned in registers. // On Windows, structs with a destructor are always returned indirectly. // Thus, weak_ptr will be passed indirectly even if it is trivial.