[llvm-dev] problem (and fix) with -fms-extensions

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Fri May 12 08:53:53 PDT 2017


Moving to cfe-dev to discuss clang things.

I think we already have _WCHAR_T_DEFINED for this:
  if (LangOpts.MicrosoftExt) {
    if (LangOpts.WChar) {
      // wchar_t supported as a keyword.
      Builder.defineMacro("_WCHAR_T_DEFINED");
      Builder.defineMacro("_NATIVE_WCHAR_T_DEFINED");
    }
  }

On Thu, May 11, 2017 at 11:04 AM, Marc Espie via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> I've tried to build something that wanted ms-extensions on OpenBSD.
> Long story short, didn't work so well, because all system includes
> lead to
>
> <machine/_types.h>
> #ifndef __cplusplus
> typedef int                     __wchar_t;
> #endif
>
> and since ms-extensions includes __char_t as a built-in, this did fail
> abysmally.
>
> It would be simple to fix in OpenBSD, assuming clang did tell us it
> was using ms-extensions.
>
> Would something like this be appropriate ? macro name subject to approval
> of course.
>
>
> Index: lib/Frontend/InitPreprocessor.cpp
> ===================================================================
> RCS file: /build/data/openbsd/cvs/src/gnu/llvm/tools/clang/lib/
> Frontend/InitPreprocessor.cpp,v
> retrieving revision 1.1.1.4
> diff -u -p -r1.1.1.4 InitPreprocessor.cpp
> --- lib/Frontend/InitPreprocessor.cpp   14 Mar 2017 08:07:56 -0000
> 1.1.1.4
> +++ lib/Frontend/InitPreprocessor.cpp   11 May 2017 17:54:41 -0000
> @@ -366,6 +366,8 @@ static void InitializeStandardPredefined
>    else
>      Builder.defineMacro("__STDC_HOSTED__");
>
> +  if (LangOpts.MicrosoftMode)
> +    Builder.defineMacro("__ms_extensions__", 1);
>    if (!LangOpts.CPlusPlus) {
>      if (LangOpts.C11)
>        Builder.defineMacro("__STDC_VERSION__", "201112L");
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170512/48d28c9a/attachment.html>


More information about the llvm-dev mailing list