
I believe all four of these failures are directly due to the pattern where allocations in the dylib are unobserved by the client program. If AIX32 and AIX64 don't support that, we should just disable the ASSERT_WITH_LIBRARY_INTERNAL_ALLOCATIONS macro on AIX, and then we don't need to XFAIL these tests. This also means I won't need to XFAIL a dozen other tests in D89057, which rely heavily on ASSERT_WITH_LIBRARY_INTERNAL_ALLOCATIONS and also currently fail on AIX. See https://buildkite.com/llvm-project/libcxx-ci/builds/7669 Differential Revision: https://reviews.llvm.org/D116866
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// UNSUPPORTED: c++03
|
|
|
|
// <filesystem>
|
|
|
|
// class path
|
|
|
|
// path& operator=(path&&) noexcept
|
|
|
|
#include "filesystem_include.h"
|
|
#include <cassert>
|
|
#include <string>
|
|
#include <type_traits>
|
|
|
|
#include "test_macros.h"
|
|
#include "count_new.h"
|
|
|
|
|
|
int main(int, char**) {
|
|
using namespace fs;
|
|
static_assert(std::is_nothrow_move_assignable<path>::value, "");
|
|
assert(globalMemCounter.checkOutstandingNewEq(0));
|
|
const std::string s("we really really really really really really really "
|
|
"really really long string so that we allocate");
|
|
ASSERT_WITH_LIBRARY_INTERNAL_ALLOCATIONS(
|
|
globalMemCounter.checkOutstandingNewEq(1));
|
|
const fs::path::string_type ps(s.begin(), s.end());
|
|
path p(s);
|
|
{
|
|
DisableAllocationGuard g;
|
|
path p2;
|
|
path& pref = (p2 = std::move(p));
|
|
assert(p2.native() == ps);
|
|
assert(p.native() != ps); // Testing moved from state
|
|
assert(&pref == &p2);
|
|
}
|
|
|
|
return 0;
|
|
}
|