Page MenuHomePhabricator

[libc++][P0202] Marked algorithms copy/copy_n/copy_if/copy_backward constexpr.
ClosedPublic

Authored by mpark on Oct 10 2019, 2:54 PM.

Diff Detail

Event Timeline

mpark created this revision.Oct 10 2019, 2:54 PM
Herald added a project: Restricted Project. ยท View Herald TranscriptOct 10 2019, 2:54 PM

Nice use of __libcpp_is_constant_evaluated(), but how will that play for C++03?

__libcpp_is_constant_evaluated returns false in C++03 mode but, it still won't work as a template argument. Putting #ifs around it will probably work, though.

libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
21

It seems like these were already here. I think it would be really great if we could instead have a single test. For all these algorithms, what I would ideally like is just to change the return type to bool, add constexpr, and return true at the end. Then we can static_assert that test succeeds. If assert fails in the test, the static_assert will also fail.

Maybe we can even develop a macro to wrap these functions and run them in both constexpr mode and normally.

ldionne requested changes to this revision.Oct 11 2019, 9:16 AM
ldionne added inline comments.
libcxx/include/algorithm
1717

If I'm not mistaken, __libcpp_is_constant_evaluated() is always true here, because the result is always required to be a constant expression (since it's a NTTP). This is one of the many pitfalls of this function.

Instead,I think you need to branch in the main copy() function, like so:

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    if (__libcpp_constant_evaluated()) {
        return _VSTD::__copy_naive(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result));
    }
    else {
        return _VSTD::__copy(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result));
    }
}

Or something along those lines, you get the point.

libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
21

We definitely need to run the tests in both runtime and compile-time worlds, since those exercise completely different things. Not only the code paths can be different (via is_constant_evaluated), but we also need to make sure the runtime code generated by the compiler agrees with the compile-time evaluation. So, running the tests in both assert and static_assert is needed IMO.

I don't think a lot of changes are required, because assert(condition) should be valid at compile-time if condition is true. I suggest something like the following:

#define ASSERT_CONSTEXPR(...) static_assert(((__VA_ARGS__),void(),true), "")

Then, this can be called as

ASSERT_CONSTEXPR(test<input_iterator<const int*>, output_iterator<int*> >());

without having to change test<...>() at all, I think. We could even go as far as to add ASSERT_CONSTEXPR_AFTER_CXX17(...), etc.

This revision now requires changes to proceed.Oct 11 2019, 9:16 AM
mpark updated this revision to Diff 224643.Oct 11 2019, 11:43 AM

Fixed the bug around the use of __libcpp_is_constant_evaluated.

mpark updated this revision to Diff 224654.Oct 11 2019, 12:21 PM

Updated the tests to run everything under compile-time and runtime.

mpark marked 3 inline comments as done.Oct 11 2019, 12:22 PM
mpark marked an inline comment as done.Oct 11 2019, 12:36 PM
mpark added inline comments.
libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
21

For now I've moved all of the cases from main into a test() function and called test(); and static_assert(test());

Alternatively, we could maybe also add macro which does something ilke:

#if TEST_STD_VER > 17
  #define TEST_RUN_BOTH_AFTER_CXX17(...) (__VA_ARGS__); static_assert((__VA_ARGS__),void(),true)
#else
  #define TEST_RUN_BOTH_AFTER_CXX17(...) (__VA_ARGS__);
#endif

with which we could do something like:

TEST_RUN_BOTH_AFTER_CXX17(test<input_iterator<const int*>, output_iterator<int*> >());
TEST_RUN_BOTH_AFTER_CXX17(test<input_iterator<const int*>, input_iterator<int*> >());
...

The simplicity of the current approach seems fitting with the simplicity of the test suite of libc++ in general, but I don't know. I also don't know what a good name for TEST_RUN_BOTH_AFTER_CXX17 would be ๐Ÿ˜•

ldionne requested changes to this revision.Oct 16 2019, 7:04 AM

Looks good, except for the duplicated test() functions. I'd also like to have a short discussion about how to test this (and more importantly the lack of regression w.r.t. codegen). Apart from that, I think this is good to go.

libcxx/include/algorithm
1734โ€“1740

This LGTM. However, one thing I just thought about is that we don't really have a way of making sure that libc++ is calling the right code at runtime vs compile-time. What I mean is that with the introduction of __libcpp_is_constant_evaluated(), we're adding a new code path that is equivalent but slower. Given some programming error (such as the previous way of dispatching on __libcpp_is_constant_evaluated(), we could conceivably end up in a situation where we always fall back to the slower (but still correct) implementation, and our tests wouldn't currently catch that.

I can't think of a way to test this at the moment, however I thought I'd at least mention it because it's a new class of potential bugs we're introducing (and against which we don't have good defence).

Edit:

Since this is really a property of the code generation, perhaps one way we could test this is by having some kind of .sh.cpp test that checks the codegen of a function calling std::copy, and confirming that for the appropriate iterator types it generates a call to memcpy. This would go in test/libcxx (since it's a property of our implementation only). Thoughts?

libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
22โ€“23

You seem to have two functions called test()?

This revision now requires changes to proceed.Oct 16 2019, 7:04 AM
mpark updated this revision to Diff 225312.Oct 16 2019, 2:57 PM

Renamed the duplicate test function.

mpark marked an inline comment as done.Oct 16 2019, 2:58 PM
mpark updated this revision to Diff 225530.Oct 17 2019, 2:52 PM

Removed unnecessary marking of runtime code path.

mpark marked an inline comment as done.Oct 17 2019, 6:17 PM
mpark added inline comments.
libcxx/include/algorithm
1734โ€“1740

@ldionne I took a stab at a approach that I think resembles count_new.h: https://reviews.llvm.org/differential/diff/225552/

The basic idea is to have an ExecutionTracker which can collect information about
the runtime execution path taken if _LIBCPP_TESTING_EXECUTION_PATH is defined.

  1. This means that we end up with some garbage in the headers like:
#ifdef _LIBCPP_TESTING_EXECUTION_PATH
    globalExecutionPathTracker.fastPathCalled();
#endif

    const size_t __n = static_cast<size_t>(__last - __first);
    if (__n > 0)
        _VSTD::memmove(__result, __first, __n * sizeof(_Up));
    return __result + __n;

but perhaps that's not so different from other conditionals.

  1. From the testing side, we have to do:
#define _LIBCPP_TESTING_EXECUTION_PATH
#include "track_execution_path.h"

#include <algorithm>

but perhaps this is not so different from random_shuffle.cxx1z.pass.cpp which does:

#define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE
#define _LIBCPP_DISABLE_DEPRECATION_WARNINGS

#include <algorithm>
ldionne accepted this revision.Nov 4 2019, 6:10 AM
This revision is now accepted and ready to land.Nov 4 2019, 6:10 AM
mpark marked an inline comment as done.Nov 4 2019, 8:04 AM
mpark updated this revision to Diff 227824.Nov 5 2019, 12:55 AM

Added missing "test_macros.h" header include.

This revision was automatically updated to reflect the committed changes.

This breaks testing on Fedora 31 (x86_64). Is there something I'm doing wrong?

FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp (50801 of 59142)
******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp' FAILED ********************
Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_backward.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c']
Exit Code: 1
Standard Error:
--
clang version 9.0.0 (Fedora 9.0.0-1.fc31)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy_backward.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_backward.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_backward.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/dave/s/lp/libcxx/include
 /tmp/_update_lc/r/projects/libcxx/include/c++build
 /home/dave/s/lp/libcxx/test/support
 /usr/local/include
 /usr/lib64/clang/9.0.0/include
 /usr/include
End of search list.
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:28:9: error: variables defined in a constexpr function must be initialized
    int ia[N];
        ^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:42:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:43:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:44:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<bidirectional_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:46:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = random_access_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:47:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<random_access_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = random_access_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:48:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<random_access_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = random_access_iterator<const int *>, OutIter = int *]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:50:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<const int*, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = const int *, OutIter = bidirectional_iterator<int *>]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:51:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<const int*, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = const int *, OutIter = random_access_iterator<int *>]
test_copy_backward()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:52:5: error: no matching function for call to 'test_copy_backward'
    test_copy_backward<const int*, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = const int *, OutIter = int *]
test_copy_backward()
^
10 errors generated.
--

Compilation failed unexpectedly!
********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80
FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp (50804 of 59142)
******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp' FAILED ********************
Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c']
Exit Code: 1
Standard Error:
--
clang version 9.0.0 (Fedora 9.0.0-1.fc31)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/dave/s/lp/libcxx/include
 /tmp/_update_lc/r/projects/libcxx/include/c++build
 /home/dave/s/lp/libcxx/test/support
 /usr/local/include
 /usr/lib64/clang/9.0.0/include
 /usr/include
End of search list.
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:26:9: error: variables defined in a constexpr function must be initialized
    int ia[N];
        ^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:40:5: error: no matching function for call to 'test_copy'
    test_copy<input_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = output_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:41:5: error: no matching function for call to 'test_copy'
    test_copy<input_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = input_iterator<int *, int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:42:5: error: no matching function for call to 'test_copy'
    test_copy<input_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = forward_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:43:5: error: no matching function for call to 'test_copy'
    test_copy<input_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = bidirectional_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:44:5: error: no matching function for call to 'test_copy'
    test_copy<input_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = random_access_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:45:5: error: no matching function for call to 'test_copy'
    test_copy<input_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = int *]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:47:5: error: no matching function for call to 'test_copy'
    test_copy<forward_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = output_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:48:5: error: no matching function for call to 'test_copy'
    test_copy<forward_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = input_iterator<int *, int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:49:5: error: no matching function for call to 'test_copy'
    test_copy<forward_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = forward_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:50:5: error: no matching function for call to 'test_copy'
    test_copy<forward_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:51:5: error: no matching function for call to 'test_copy'
    test_copy<forward_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:52:5: error: no matching function for call to 'test_copy'
    test_copy<forward_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = int *]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:54:5: error: no matching function for call to 'test_copy'
    test_copy<bidirectional_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = output_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:55:5: error: no matching function for call to 'test_copy'
    test_copy<bidirectional_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = input_iterator<int *, int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:56:5: error: no matching function for call to 'test_copy'
    test_copy<bidirectional_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = forward_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:57:5: error: no matching function for call to 'test_copy'
    test_copy<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:58:5: error: no matching function for call to 'test_copy'
    test_copy<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:59:5: error: no matching function for call to 'test_copy'
    test_copy<bidirectional_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *]
test_copy()
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
--

Compilation failed unexpectedly!
********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80
FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp (50805 of 59142)
******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp' FAILED ********************
Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_if.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c']
Exit Code: 1
Standard Error:
--
clang version 9.0.0 (Fedora 9.0.0-1.fc31)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy_if.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_if.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_if.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/dave/s/lp/libcxx/include
 /tmp/_update_lc/r/projects/libcxx/include/c++build
 /home/dave/s/lp/libcxx/test/support
 /usr/local/include
 /usr/lib64/clang/9.0.0/include
 /usr/include
End of search list.
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:33:9: error: variables defined in a constexpr function must be initialized
    int ia[N];
        ^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:47:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<input_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = output_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:48:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<input_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = input_iterator<int *, int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:49:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<input_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = forward_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:50:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<input_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:51:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<input_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = random_access_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:52:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<input_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = int *]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:54:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<forward_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = output_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:55:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<forward_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = input_iterator<int *, int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:56:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<forward_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = forward_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:57:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<forward_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:58:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<forward_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:59:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<forward_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = int *]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:61:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<bidirectional_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = output_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:62:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<bidirectional_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = input_iterator<int *, int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:63:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<bidirectional_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = forward_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:64:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:65:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy_if()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:66:5: error: no matching function for call to 'test_copy_if'
    test_copy_if<bidirectional_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *]
test_copy_if()
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
--

Compilation failed unexpectedly!
********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80
FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp (50807 of 59142)
******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp' FAILED ********************
Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_n.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c']
Exit Code: 1
Standard Error:
--
clang version 9.0.0 (Fedora 9.0.0-1.fc31)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy_n.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_n.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_n.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/dave/s/lp/libcxx/include
 /tmp/_update_lc/r/projects/libcxx/include/c++build
 /home/dave/s/lp/libcxx/test/support
 /usr/local/include
 /usr/lib64/clang/9.0.0/include
 /usr/include
End of search list.
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:29:9: error: variables defined in a constexpr function must be initialized
    int ia[N];
        ^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:43:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<input_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = output_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:44:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<input_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = input_iterator<int *, int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:45:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<input_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = forward_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:46:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<input_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:47:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<input_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = random_access_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:48:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<input_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = int *]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:50:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<forward_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = output_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:51:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<forward_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = input_iterator<int *, int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:52:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<forward_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = forward_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:53:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<forward_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:54:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<forward_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:55:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<forward_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = int *]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:57:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<bidirectional_iterator<const int*>, output_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = output_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:58:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<bidirectional_iterator<const int*>, input_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = input_iterator<int *, int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:59:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<bidirectional_iterator<const int*>, forward_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = forward_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:60:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:61:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>]
test_copy_n()
^
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:62:5: error: no matching function for call to 'test_copy_n'
    test_copy_n<bidirectional_iterator<const int*>, int*>();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *]
test_copy_n()
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
--

Compilation failed unexpectedly!
********************

Folks, we're aware of the CI failures, and we're working on fixing them. It's taking a bit longer than usual since we're at a committee meeting right now.

Would you object if I revert this? Bots/CI are fairly pointless if fixes/reverts aren't timely.

https://reviews.llvm.org/D69940 should fix the problems.

Thanks. Verified.