aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorArthur O'Dwyer <arthur.j.odwyer@gmail.com>2021-01-15 12:59:56 -0500
committerArthur O'Dwyer <arthur.j.odwyer@gmail.com>2021-02-03 16:28:38 -0500
commitd41c6d51cbadbbd0f81c6ac0d6628d01b881e2a5 (patch)
tree84e9134754183969eb7397d366d7537fafc0476b /clang/lib/Frontend/CompilerInvocation.cpp
parent9db61142965e6f4b382e7ff7bde8af5d8396fe98 (diff)
downloadllvm-d41c6d51cbadbbd0f81c6ac0d6628d01b881e2a5.zip
llvm-d41c6d51cbadbbd0f81c6ac0d6628d01b881e2a5.tar.gz
llvm-d41c6d51cbadbbd0f81c6ac0d6628d01b881e2a5.tar.bz2
[libc++] Rationalize our treatment of contiguous iterators and __unwrap_iter().
- Implement C++20's changes to `reverse_iterator`, so that it won't be accidentally counted as a contiguous iterator in C++20 mode. - Implement C++20's changes to `move_iterator` as well. - `move_iterator` should not be contiguous. This fixes a bug where we optimized `std::copy`-of-move-iterators in an observable way. Add a regression test for that bugfix. - Add libcxx tests for `__is_cpp17_contiguous_iterator` of all relevant standard iterator types. Particularly check that vector::iterator is still considered contiguous in all C++ modes, even C++03. After this patch, there continues to be no supported way to write your own iterator type in C++17-and-earlier such that libc++ will consider it "contiguous"; however, we now fully support the C++20 approach (in C++20 mode only). If you want user-defined contiguous iterators in C++17-and-earlier, libc++'s position is "please upgrade to C++20." Differential Revision: https://reviews.llvm.org/D94807
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions