[libc++] Refactor Windows support headers.
authorEric Fiselier <eric@efcs.ca>
Wed, 10 May 2017 20:57:45 +0000 (20:57 +0000)
committerEric Fiselier <eric@efcs.ca>
Wed, 10 May 2017 20:57:45 +0000 (20:57 +0000)
commit5d50aa32041596e2c32c50e8cf767cac5e98ba72
tree3b1ec444349e84708793446b039746850729ef71
parenta0987b83d53f38c374d8c090a7ce9081ab2b4444
[libc++] Refactor Windows support headers.

Summary:
This patch refactors and tries to remove as much of the Windows support headers as possible. This is needed because they currently introduce super weird include cycles and dependencies between STL and libc headers.

The changes in this patch are:

* remove `support/win32/support.h` completely. The required parts have either been moved into `support/win32/msvc_support.h` (for `MSVC` only helpers not needed by Clang), or directly into their respective `foo.h` headers.

* Combine `locale_win32.h` and `locale_mgmt_win32.h` into a single headers, this header should only be included within `__locale` or `locale` to avoid include cycles.

* Remove the unneeded parts of `limits_win32.h` and re-name it to `limits_msvc_win32.h` since it's only needed by Clang.

I've tested this patch using Clang on Windows, but I suspect it might technically regress our non-existent support for MSVC. Is somebody able to double check?

This refactor is needed to support upcoming fixes to `<locale>` on Windows.

Reviewers: bcraig, rmaprath, compnerd, EricWF

Reviewed By: EricWF

Subscribers: majnemer, cfe-commits

Differential Revision: https://reviews.llvm.org/D32988

llvm-svn: 302727
14 files changed:
libcxx/include/__mutex_base
libcxx/include/__threading_support
libcxx/include/algorithm
libcxx/include/ctype.h
libcxx/include/limits
libcxx/include/stdio.h
libcxx/include/stdlib.h
libcxx/include/support/win32/limits_msvc_win32.h [moved from libcxx/include/support/win32/limits_win32.h with 80% similarity]
libcxx/include/support/win32/locale_mgmt_win32.h [deleted file]
libcxx/include/support/win32/locale_win32.h
libcxx/include/support/win32/msvc_builtin_support.h [moved from libcxx/include/support/win32/support.h with 84% similarity]
libcxx/include/wchar.h
libcxx/src/string.cpp
libcxx/src/support/runtime/exception_pointer_msvc.ipp