[llvm-dev] problem (and fix) with -fms-extensions
Dimitry Andric via llvm-dev
llvm-dev at lists.llvm.org
Fri May 12 03:01:35 PDT 2017
On 11 May 2017, at 20:04, 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.
Back in 2014 when we encountered this in FreeBSD, we just renamed our
internal type to ___wchar_t instead:
http://svnweb.freebsd.org/changeset/base/263998
> 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");
Looks fine to me, though you would also have to convince the gcc authors
to do the same. (That is, if you still want to use recent gcc's... :)
-Dimitry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170512/ba0047ed/attachment.sig>
More information about the llvm-dev
mailing list