diff options
author | Eric Fiselier <eric@efcs.ca> | 2017-05-31 22:07:49 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2017-05-31 22:07:49 +0000 |
commit | a016efb1dcda61e606e527b73791fbacf1bc9c86 (patch) | |
tree | f98a8a9a31a14d8d72c4d549467288b5dce6e594 /libcxx/include/algorithm | |
parent | 0b69e363f65b9207d42213f546a9e2fa55c503be (diff) | |
download | bcm5719-llvm-a016efb1dcda61e606e527b73791fbacf1bc9c86.tar.gz bcm5719-llvm-a016efb1dcda61e606e527b73791fbacf1bc9c86.zip |
[Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows
Summary:
This patch improves how libc++ handles min/max macros within the headers. Previously libc++ would undef them and emit a warning.
This patch changes libc++ to use `#pragma push_macro` to save the macro before undefining it, and `#pragma pop_macro` to restore the macros and the end of the header.
Reviewers: mclow.lists, bcraig, compnerd, EricWF
Reviewed By: EricWF
Subscribers: cfe-commits, krytarowski
Differential Revision: https://reviews.llvm.org/D33080
llvm-svn: 304357
Diffstat (limited to 'libcxx/include/algorithm')
-rw-r--r-- | libcxx/include/algorithm | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm index 71440508e9c..9fe0361e577 100644 --- a/libcxx/include/algorithm +++ b/libcxx/include/algorithm @@ -651,14 +651,16 @@ template <class BidirectionalIterator, class Compare> #include <intrin.h> #endif -#include <__undef_min_max> - #include <__debug> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + _LIBCPP_BEGIN_NAMESPACE_STD // I'd like to replace these with _VSTD::equal_to<void>, but can't because: @@ -5904,4 +5906,6 @@ prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP_ALGORITHM |