@@ -33,31 +33,13 @@ union stream_data {
3333  }
3434};
3535
36- #define  CHAR_MANGLING_char  " D" 
37- #define  CHAR_MANGLING_wchar_t  " _W" 
38- #define  CHAR_MANGLING (CharT ) CHAR_MANGLING_##CharT
39- 
40- #ifdef  _LIBCPP_COMPILER_CLANG_BASED
41- #  define  STRING_DATA_CONSTINIT  constinit 
42- #else 
43- #  define  STRING_DATA_CONSTINIT 
44- #endif 
45- 
46- #ifdef  _LIBCPP_ABI_MICROSOFT
47- #  define  STREAM (StreamT, BufferT, CharT, var )                                                                         \
48-     STRING_DATA_CONSTINIT stream_data<StreamT<CharT>, BufferT<CharT>> var __asm__ (                                     \
49-         " ?"   #var " @"   ABI_NAMESPACE_STR " @std@@3V?$"   #StreamT                                                           \
50-         " @"   CHAR_MANGLING(CharT) "U?$char_traits@" CHAR_MANGLING(CharT) "@" ABI_NAMESPACE_STR "@std@@@12@A")
51- #else 
52- 
5336//  To avoid ODR violations without breaking the ABI, we need to define it as a StreamT<CharT>.
5437//  However, since initialization order of statics is arbitrary, we could run DoIOSInit first and then
5538//  construct the stream for a second time, overwriting the data in it.
5639//  To avoid this, we call a constructor overload that specifically avoids initializing any members.
57- #  define  STREAM (StreamT, BufferT, CharT, var )                                                                         \
58-     StreamT<CharT> var{std::__uninitialized_ios_tag{}};                                                                \
59-     stream_data<BufferT<CharT>, StreamT<CharT>, var> sd_##var;
60- #endif 
40+ #define  STREAM (StreamT, BufferT, CharT, var )                                                                           \
41+   StreamT<CharT> var{std::__uninitialized_ios_tag{}};                                                                  \
42+   stream_data<BufferT<CharT>, StreamT<CharT>, var> sd_##var;
6143
6244_LIBCPP_EXPORTED_FROM_ABI STREAM (basic_istream, __stdinbuf, char , cin)
6345_LIBCPP_EXPORTED_FROM_ABI STREAM(basic_ostream, __stdoutbuf, char , cout)
0 commit comments