<div dir="ltr"><div>Moving to cfe-dev to discuss clang things.<br></div><div><br></div><div>I think we already have _WCHAR_T_DEFINED for this:</div><div><div>  if (LangOpts.MicrosoftExt) {</div><div>    if (LangOpts.WChar) {</div><div>      // wchar_t supported as a keyword.</div><div>      Builder.defineMacro("_WCHAR_T_DEFINED");</div><div>      Builder.defineMacro("_NATIVE_WCHAR_T_DEFINED");</div><div>    }</div><div>  }</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 11, 2017 at 11:04 AM, Marc Espie via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@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">I've tried to build something that wanted ms-extensions on OpenBSD.<br>
Long story short, didn't work so well, because all system includes<br>
lead to<br>
<br>
<machine/_types.h><br>
#ifndef __cplusplus<br>
typedef int                     __wchar_t;<br>
#endif<br>
<br>
and since ms-extensions includes __char_t as a built-in, this did fail<br>
abysmally.<br>
<br>
It would be simple to fix in OpenBSD, assuming clang did tell us it<br>
was using ms-extensions.<br>
<br>
Would something like this be appropriate ? macro name subject to approval<br>
of course.<br>
<br>
<br>
Index: lib/Frontend/InitPreprocessor.<wbr>cpp<br>
==============================<wbr>==============================<wbr>=======<br>
RCS file: /build/data/openbsd/cvs/src/<wbr>gnu/llvm/tools/clang/lib/<wbr>Frontend/InitPreprocessor.cpp,<wbr>v<br>
retrieving revision 1.1.1.4<br>
diff -u -p -r1.1.1.4 InitPreprocessor.cpp<br>
--- lib/Frontend/InitPreprocessor.<wbr>cpp   14 Mar 2017 08:07:56 -0000      1.1.1.4<br>
+++ lib/Frontend/InitPreprocessor.<wbr>cpp   11 May 2017 17:54:41 -0000<br>
@@ -366,6 +366,8 @@ static void InitializeStandardPredefined<br>
   else<br>
     Builder.defineMacro("__STDC_<wbr>HOSTED__");<br>
<br>
+  if (LangOpts.MicrosoftMode)<br>
+    Builder.defineMacro("__ms_<wbr>extensions__", 1);<br>
   if (!LangOpts.CPlusPlus) {<br>
     if (LangOpts.C11)<br>
       Builder.defineMacro("__STDC_<wbr>VERSION__", "201112L");<br>
<br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>