SuccessChanges

Summary

  1. Re-land: [lit] Support running tests on Windows without GnuWin32 (details)
  2. [libc++] Include C++ headers, not C headers, in <charconv>. (details)
  3. [libc++] ADL-proof by adding _VSTD:: qualifications to memmove etc. (details)
Commit 0f1f13fcb17fbc8c93d505da989a04ab5cbd9ed3 by alexandre.ganea
Re-land: [lit] Support running tests on Windows without GnuWin32

Historically, we have told contributors that GnuWin32 is a pre-requisite
because our tests depend on utilities such as sed, grep, diff, and more.
However, Git on Windows includes versions of these utilities in its
installation. Furthermore, GnuWin32 has not been updated in many years.
For these reasons, it makes sense to have the ability to run llvm tests
in a way that is both:

a) Easier on the user (less stuff to install)
b) More up-to-date (The verions that ship with git are at least as
   new, if not newer, than the versions in GnuWin32.
We add support for this here by attempting to detect where Git is
installed using the Windows registry, confirming the existence of
several common Unix tools, and then adding this location to lit's PATH
environment.

Differential Revision: https://reviews.llvm.org/D84380
The file was modifiedllvm/utils/lit/lit/llvm/config.py
Commit b12ea0652129da3b42642a0b76adbfab8833db53 by arthur.j.odwyer
[libc++] Include C++ headers, not C headers, in <charconv>.

This matches how libc++ does it in all other C++ headers
(that is, headers not ending in ".h").
We need to include <cstring> if we want to use `_VSTD::memmove`
instead of unqualified ADL `memmove`. Even though ADL doesn't
physically matter in <charconv>'s specific case, I'm trying
to migrate libc++ to using `_VSTD::memmove` for all cases
(because some of them do matter, and this way it's easier to
grep for outliers).

Differential Revision: https://reviews.llvm.org/D92875
The file was modifiedlibcxx/include/charconv
Commit 3696227c10f5e5841223c2a2fb63fdd1d50a7930 by arthur.j.odwyer
[libc++] ADL-proof by adding _VSTD:: qualifications to memmove etc.

Generally these calls aren't vulnerable to ADL because they involve only
primitive types. The ones in <list> and <vector> drag in namespace std
but that's OK; the ones in <fstream> and <strstream> are vulnerable
iff `CharT` is an enum type, which seems far-fetched.
But absolutely zero of them *need* ADL to happen; so in my opinion
they should all be consistently qualified, just like calls to any
other (non-user-customizable) functions in namespace std.

Also: Include <cstring> and <cwchar> in <__string>.
We seemed to be getting lucky that <memory> included <iterator>
included <iosfwd> included <wchar.h>. That gave us the
global-namespace `wmemmove`, but not `_VSTD::wmemmove`.
This is now fixed.

I didn't touch these headers:
<ext/__hash> uses strlen, safely
<support/ibm/locale_mgmt_aix.h> uses memcpy, safely
<string.h> uses memchr and strchr, safely
<wchar.h> uses wcschr, safely
<__bsd_locale_fallbacks.h> uses wcsnrtombs, safely

Differential Revision: https://reviews.llvm.org/D93061
The file was modifiedlibcxx/include/__hash_table
The file was modifiedlibcxx/include/locale
The file was modifiedlibcxx/include/vector
The file was modifiedlibcxx/include/atomic
The file was modifiedlibcxx/include/strstream
The file was modifiedlibcxx/include/__string
The file was modifiedlibcxx/include/string
The file was modifiedlibcxx/include/__locale
The file was modifiedlibcxx/include/fstream
The file was modifiedlibcxx/include/list