<div dir="ltr">Just a correction on the commit message: its not Windows.h that is defining `__out`.  `__out` is a SAL keyword.  Unfortunately, I don't know of a way to disable SAL.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 7, 2017 at 3:27 AM, Eric Fiselier via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ericwf<br>
Date: Sat Jan  7 05:27:06 2017<br>
New Revision: 291345<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=291345&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=291345&view=rev</a><br>
Log:<br>
Replace identifiers called `__out` because Windows.h #defines it.<br>
<br>
Windows is greedy and it defines the identifier `__out` as a macro.<br>
This patch renames all conflicting libc++ identifiers in order<br>
to correctly work on Windows.<br>
<br>
Modified:<br>
    libcxx/trunk/include/algorithm<br>
    libcxx/trunk/include/<wbr>experimental/algorithm<br>
    libcxx/trunk/include/<wbr>experimental/iterator<br>
    libcxx/trunk/include/regex<br>
    libcxx/trunk/test/support/<wbr>nasty_macros.hpp<br>
<br>
Modified: libcxx/trunk/include/algorithm<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/algorithm?rev=291345&r1=291344&r2=291345&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/libcxx/trunk/include/<wbr>algorithm?rev=291345&r1=<wbr>291344&r2=291345&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- libcxx/trunk/include/algorithm (original)<br>
+++ libcxx/trunk/include/algorithm Sat Jan  7 05:27:06 2017<br>
@@ -3100,28 +3100,28 @@ template <class _PopulationIterator, cla<br>
           class _UniformRandomNumberGenerator><br>
 _LIBCPP_INLINE_VISIBILITY<br>
 _SampleIterator __sample(_PopulationIterator __first,<br>
-                         _PopulationIterator __last, _SampleIterator __out,<br>
+                         _PopulationIterator __last, _SampleIterator __output,<br>
                          _Distance __n,<br>
                          _UniformRandomNumberGenerator & __g,<br>
                          input_iterator_tag) {<br>
<br>
   _Distance __k = 0;<br>
   for (; __first != __last && __k < __n; ++__first, (void)++__k)<br>
-    __out[__k] = *__first;<br>
+    __output[__k] = *__first;<br>
   _Distance __sz = __k;<br>
   for (; __first != __last; ++__first, (void)++__k) {<br>
     _Distance __r = _VSTD::uniform_int_<wbr>distribution<_Distance>(0, __k)(__g);<br>
     if (__r < __sz)<br>
-      __out[__r] = *__first;<br>
+      __output[__r] = *__first;<br>
   }<br>
-  return __out + _VSTD::min(__n, __k);<br>
+  return __output + _VSTD::min(__n, __k);<br>
 }<br>
<br>
 template <class _PopulationIterator, class _SampleIterator, class _Distance,<br>
           class _UniformRandomNumberGenerator><br>
 _LIBCPP_INLINE_VISIBILITY<br>
 _SampleIterator __sample(_PopulationIterator __first,<br>
-                         _PopulationIterator __last, _SampleIterator __out,<br>
+                         _PopulationIterator __last, _SampleIterator __output,<br>
                          _Distance __n,<br>
                          _UniformRandomNumberGenerator& __g,<br>
                          forward_iterator_tag) {<br>
@@ -3130,18 +3130,18 @@ _SampleIterator __sample(_PopulationIter<br>
     _Distance __r =<br>
         _VSTD::uniform_int_<wbr>distribution<_Distance>(0, --__unsampled_sz)(__g);<br>
     if (__r < __n) {<br>
-      *__out++ = *__first;<br>
+      *__output++ = *__first;<br>
       --__n;<br>
     }<br>
   }<br>
-  return __out;<br>
+  return __output;<br>
 }<br>
<br>
 template <class _PopulationIterator, class _SampleIterator, class _Distance,<br>
           class _UniformRandomNumberGenerator><br>
 _LIBCPP_INLINE_VISIBILITY<br>
 _SampleIterator __sample(_PopulationIterator __first,<br>
-                         _PopulationIterator __last, _SampleIterator __out,<br>
+                         _PopulationIterator __last, _SampleIterator __output,<br>
                          _Distance __n, _UniformRandomNumberGenerator& __g) {<br>
   typedef typename iterator_traits<_<wbr>PopulationIterator>::iterator_<wbr>category<br>
         _PopCategory;<br>
@@ -3153,7 +3153,7 @@ _SampleIterator __sample(_PopulationIter<br>
   typedef typename common_type<_Distance, _Difference>::type _CommonType;<br>
   _LIBCPP_ASSERT(__n >= 0, "N must be a positive number.");<br>
   return _VSTD::__sample(<br>
-      __first, __last, __out, _CommonType(__n),<br>
+      __first, __last, __output, _CommonType(__n),<br>
       __g, _PopCategory());<br>
 }<br>
<br>
@@ -3162,9 +3162,9 @@ template <class _PopulationIterator, cla<br>
           class _UniformRandomNumberGenerator><br>
 inline _LIBCPP_INLINE_VISIBILITY<br>
 _SampleIterator sample(_PopulationIterator __first,<br>
-                       _PopulationIterator __last, _SampleIterator __out,<br>
+                       _PopulationIterator __last, _SampleIterator __output,<br>
                        _Distance __n, _UniformRandomNumberGenerator&<wbr>& __g) {<br>
-    return _VSTD::__sample(__first, __last, __out, __n, __g);<br>
+    return _VSTD::__sample(__first, __last, __output, __n, __g);<br>
 }<br>
 #endif // _LIBCPP_STD_VER > 14<br>
<br>
<br>
Modified: libcxx/trunk/include/<wbr>experimental/algorithm<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/experimental/algorithm?rev=291345&r1=291344&r2=291345&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/libcxx/trunk/include/<wbr>experimental/algorithm?rev=<wbr>291345&r1=291344&r2=291345&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- libcxx/trunk/include/<wbr>experimental/algorithm (original)<br>
+++ libcxx/trunk/include/<wbr>experimental/algorithm Sat Jan  7 05:27:06 2017<br>
@@ -60,9 +60,9 @@ template <class _PopulationIterator, cla<br>
           class _UniformRandomNumberGenerator><br>
 inline _LIBCPP_INLINE_VISIBILITY<br>
 _SampleIterator sample(_PopulationIterator __first, _PopulationIterator __last,<br>
-                       _SampleIterator __out, _Distance __n,<br>
+                       _SampleIterator __output, _Distance __n,<br>
                        _UniformRandomNumberGenerator &&__g) {<br>
-  return _VSTD::__sample(__first, __last, __out, __n, __g);<br>
+  return _VSTD::__sample(__first, __last, __output, __n, __g);<br>
 }<br>
<br>
 _LIBCPP_END_NAMESPACE_LFTS<br>
<br>
Modified: libcxx/trunk/include/<wbr>experimental/iterator<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/experimental/iterator?rev=291345&r1=291344&r2=291345&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/libcxx/trunk/include/<wbr>experimental/iterator?rev=<wbr>291345&r1=291344&r2=291345&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- libcxx/trunk/include/<wbr>experimental/iterator (original)<br>
+++ libcxx/trunk/include/<wbr>experimental/iterator Sat Jan  7 05:27:06 2017<br>
@@ -75,19 +75,19 @@ public:<br>
     typedef void                                 reference;<br>
<br>
     ostream_joiner(ostream_type& __os, _Delim&& __d)<br>
-        : __out(_VSTD::addressof(__os)), __delim(_VSTD::move(__d)), __first(true) {}<br>
+        : __output(_VSTD::addressof(__<wbr>os)), __delim(_VSTD::move(__d)), __first(true) {}<br>
<br>
     ostream_joiner(ostream_type& __os, const _Delim& __d)<br>
-        : __out(_VSTD::addressof(__os)), __delim(__d), __first(true) {}<br>
+        : __output(_VSTD::addressof(__<wbr>os)), __delim(__d), __first(true) {}<br>
<br>
<br>
     template<typename _Tp><br>
     ostream_joiner& operator=(const _Tp& __v)<br>
     {<br>
         if (!__first)<br>
-            *__out << __delim;<br>
+            *__output << __delim;<br>
         __first = false;<br>
-        *__out << __v;<br>
+        *__output << __v;<br>
         return *this;<br>
     }<br>
<br>
@@ -96,7 +96,7 @@ public:<br>
     ostream_joiner& operator++(int) _NOEXCEPT { return *this; }<br>
<br>
 private:<br>
-    ostream_type*   __out;<br>
+    ostream_type*   __output;<br>
     _Delim          __delim;<br>
     bool            __first;<br>
 };<br>
<br>
Modified: libcxx/trunk/include/regex<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/regex?rev=291345&r1=291344&r2=291345&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/libcxx/trunk/include/<wbr>regex?rev=291345&r1=291344&r2=<wbr>291345&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- libcxx/trunk/include/regex (original)<br>
+++ libcxx/trunk/include/regex Sat Jan  7 05:27:06 2017<br>
@@ -5262,15 +5262,15 @@ public:<br>
     // format:<br>
     template <class _OutputIter><br>
         _OutputIter<br>
-        format(_OutputIter __out, const char_type* __fmt_first,<br>
+        format(_OutputIter __output, const char_type* __fmt_first,<br>
                const char_type* __fmt_last,<br>
                regex_constants::match_flag_<wbr>type __flags = regex_constants::format_<wbr>default) const;<br>
     template <class _OutputIter, class _ST, class _SA><br>
         _LIBCPP_INLINE_VISIBILITY<br>
         _OutputIter<br>
-        format(_OutputIter __out, const basic_string<char_type, _ST, _SA>& __fmt,<br>
+        format(_OutputIter __output, const basic_string<char_type, _ST, _SA>& __fmt,<br>
                regex_constants::match_flag_<wbr>type __flags = regex_constants::format_<wbr>default) const<br>
-            {return format(__out, __fmt.data(), __fmt.data() + __fmt.size(), __flags);}<br>
+            {return format(__output, __fmt.data(), __fmt.data() + __fmt.size(), __flags);}<br>
     template <class _ST, class _SA><br>
         _LIBCPP_INLINE_VISIBILITY<br>
         basic_string<char_type, _ST, _SA><br>
@@ -5382,7 +5382,7 @@ match_results<_<wbr>BidirectionalIterator, _A<br>
 template <class _BidirectionalIterator, class _Allocator><br>
 template <class _OutputIter><br>
 _OutputIter<br>
-match_results<_<wbr>BidirectionalIterator, _Allocator>::format(_<wbr>OutputIter __out,<br>
+match_results<_<wbr>BidirectionalIterator, _Allocator>::format(_<wbr>OutputIter __output,<br>
         const char_type* __fmt_first, const char_type* __fmt_last,<br>
         regex_constants::match_flag_<wbr>type __flags) const<br>
 {<br>
@@ -5391,27 +5391,27 @@ match_results<_<wbr>BidirectionalIterator, _A<br>
         for (; __fmt_first != __fmt_last; ++__fmt_first)<br>
         {<br>
             if (*__fmt_first == '&')<br>
-                __out = _VSTD::copy(__matches_[0].<wbr>first, __matches_[0].second,<br>
-                                   __out);<br>
+                __output = _VSTD::copy(__matches_[0].<wbr>first, __matches_[0].second,<br>
+                                   __output);<br>
             else if (*__fmt_first == '\\' && __fmt_first + 1 != __fmt_last)<br>
             {<br>
                 ++__fmt_first;<br>
                 if ('0' <= *__fmt_first && *__fmt_first <= '9')<br>
                 {<br>
                     size_t __i = *__fmt_first - '0';<br>
-                    __out = _VSTD::copy((*this)[__i].<wbr>first,<br>
-                                        (*this)[__i].second, __out);<br>
+                    __output = _VSTD::copy((*this)[__i].<wbr>first,<br>
+                                        (*this)[__i].second, __output);<br>
                 }<br>
                 else<br>
                 {<br>
-                    *__out = *__fmt_first;<br>
-                    ++__out;<br>
+                    *__output = *__fmt_first;<br>
+                    ++__output;<br>
                 }<br>
             }<br>
             else<br>
             {<br>
-                *__out = *__fmt_first;<br>
-                ++__out;<br>
+                *__output = *__fmt_first;<br>
+                ++__output;<br>
             }<br>
         }<br>
     }<br>
@@ -5424,21 +5424,21 @@ match_results<_<wbr>BidirectionalIterator, _A<br>
                 switch (__fmt_first[1])<br>
                 {<br>
                 case '$':<br>
-                    *__out = *++__fmt_first;<br>
-                    ++__out;<br>
+                    *__output = *++__fmt_first;<br>
+                    ++__output;<br>
                     break;<br>
                 case '&':<br>
                     ++__fmt_first;<br>
-                    __out = _VSTD::copy(__matches_[0].<wbr>first, __matches_[0].second,<br>
-                                       __out);<br>
+                    __output = _VSTD::copy(__matches_[0].<wbr>first, __matches_[0].second,<br>
+                                       __output);<br>
                     break;<br>
                 case '`':<br>
                     ++__fmt_first;<br>
-                    __out = _VSTD::copy(__prefix_.first, __prefix_.second, __out);<br>
+                    __output = _VSTD::copy(__prefix_.first, __prefix_.second, __output);<br>
                     break;<br>
                 case '\'':<br>
                     ++__fmt_first;<br>
-                    __out = _VSTD::copy(__suffix_.first, __suffix_.second, __out);<br>
+                    __output = _VSTD::copy(__suffix_.first, __suffix_.second, __output);<br>
                     break;<br>
                 default:<br>
                     if ('0' <= __fmt_first[1] && __fmt_first[1] <= '9')<br>
@@ -5451,25 +5451,25 @@ match_results<_<wbr>BidirectionalIterator, _A<br>
                             ++__fmt_first;<br>
                             __i = 10 * __i + *__fmt_first - '0';<br>
                         }<br>
-                        __out = _VSTD::copy((*this)[__i].<wbr>first,<br>
-                                            (*this)[__i].second, __out);<br>
+                        __output = _VSTD::copy((*this)[__i].<wbr>first,<br>
+                                            (*this)[__i].second, __output);<br>
                     }<br>
                     else<br>
                     {<br>
-                        *__out = *__fmt_first;<br>
-                        ++__out;<br>
+                        *__output = *__fmt_first;<br>
+                        ++__output;<br>
                     }<br>
                     break;<br>
                 }<br>
             }<br>
             else<br>
             {<br>
-                *__out = *__fmt_first;<br>
-                ++__out;<br>
+                *__output = *__fmt_first;<br>
+                ++__output;<br>
             }<br>
         }<br>
     }<br>
-    return __out;<br>
+    return __output;<br>
 }<br>
<br>
 template <class _BidirectionalIterator, class _Allocator><br>
@@ -6459,7 +6459,7 @@ typedef regex_token_iterator<wstring::<wbr>co<br>
 template <class _OutputIterator, class _BidirectionalIterator,<br>
           class _Traits, class _CharT><br>
 _OutputIterator<br>
-regex_replace(_OutputIterator __out,<br>
+regex_replace(_OutputIterator __output,<br>
               _BidirectionalIterator __first, _BidirectionalIterator __last,<br>
               const basic_regex<_CharT, _Traits>& __e, const _CharT* __fmt,<br>
               regex_constants::match_flag_<wbr>type __flags = regex_constants::match_<wbr>default)<br>
@@ -6470,7 +6470,7 @@ regex_replace(_OutputIterator __out,<br>
     if (__i == __eof)<br>
     {<br>
         if (!(__flags & regex_constants::format_no_<wbr>copy))<br>
-            __out = _VSTD::copy(__first, __last, __out);<br>
+            __output = _VSTD::copy(__first, __last, __output);<br>
     }<br>
     else<br>
     {<br>
@@ -6478,29 +6478,29 @@ regex_replace(_OutputIterator __out,<br>
         for (size_t __len = char_traits<_CharT>::length(__<wbr>fmt); __i != __eof; ++__i)<br>
         {<br>
             if (!(__flags & regex_constants::format_no_<wbr>copy))<br>
-                __out = _VSTD::copy(__i->prefix().<wbr>first, __i->prefix().second, __out);<br>
-            __out = __i->format(__out, __fmt, __fmt + __len, __flags);<br>
+                __output = _VSTD::copy(__i->prefix().<wbr>first, __i->prefix().second, __output);<br>
+            __output = __i->format(__output, __fmt, __fmt + __len, __flags);<br>
             __lm = __i->suffix();<br>
             if (__flags & regex_constants::format_first_<wbr>only)<br>
                 break;<br>
         }<br>
         if (!(__flags & regex_constants::format_no_<wbr>copy))<br>
-            __out = _VSTD::copy(__lm.first, __lm.second, __out);<br>
+            __output = _VSTD::copy(__lm.first, __lm.second, __output);<br>
     }<br>
-    return __out;<br>
+    return __output;<br>
 }<br>
<br>
 template <class _OutputIterator, class _BidirectionalIterator,<br>
           class _Traits, class _CharT, class _ST, class _SA><br>
 inline _LIBCPP_INLINE_VISIBILITY<br>
 _OutputIterator<br>
-regex_replace(_OutputIterator __out,<br>
+regex_replace(_OutputIterator __output,<br>
               _BidirectionalIterator __first, _BidirectionalIterator __last,<br>
               const basic_regex<_CharT, _Traits>& __e,<br>
               const basic_string<_CharT, _ST, _SA>& __fmt,<br>
               regex_constants::match_flag_<wbr>type __flags = regex_constants::match_<wbr>default)<br>
 {<br>
-    return _VSTD::regex_replace(__out, __first, __last, __e, __fmt.c_str(), __flags);<br>
+    return _VSTD::regex_replace(__output, __first, __last, __e, __fmt.c_str(), __flags);<br>
 }<br>
<br>
 template <class _Traits, class _CharT, class _ST, class _SA, class _FST,<br>
<br>
Modified: libcxx/trunk/test/support/<wbr>nasty_macros.hpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/nasty_macros.hpp?rev=291345&r1=291344&r2=291345&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/libcxx/trunk/test/<wbr>support/nasty_macros.hpp?rev=<wbr>291345&r1=291344&r2=291345&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- libcxx/trunk/test/support/<wbr>nasty_macros.hpp (original)<br>
+++ libcxx/trunk/test/support/<wbr>nasty_macros.hpp Sat Jan  7 05:27:06 2017<br>
@@ -37,4 +37,11 @@<br>
 #define _Y NASTY_MACRO<br>
 #define _Z NASTY_MACRO<br>
<br>
+// Test that libc++ doesn't use names reserved by WIN32 API Macros.<br>
+// NOTE: Obviously we can only define these on non-windows platforms.<br>
+#ifndef _WIN32<br>
+#define __deallocate NASTY_MACRO<br>
+#define __out NASTY_MACRO<br>
+#endif<br>
+<br>
 #endif // SUPPORT_NASTY_MACROS_HPP<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Saleem Abdulrasool<br>compnerd (at) compnerd (dot) org</div>
</div>