[PATCH] D17330: PR26648: "inline" shouldn't be recognized as a C keyword in MSVC 2013 compatibility mode

David Majnemer via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 17 09:06:30 PST 2016


majnemer added a comment.

In http://reviews.llvm.org/D17330#354755, @andreybokhanko wrote:

> In http://reviews.llvm.org/D17330#354730, @majnemer wrote:
>
> > Why not just stick clang in C90 mode when targeting C if the -fms-compatibility-version is 18?
> >
> > We have similar code for the C++ mode in https://github.com/llvm-mirror/clang/blob/master/lib/Driver/Tools.cpp#l5069
>
>
> David, thanks for looking into this!
>
> MSVC18 doesn't support a set C standard; it adds some things from C99 as well. For example, it supports _Bool. So, I tried not to throw away baby along with bathwater and cause too much disruption.
>
> OK -- will implement a driver fix that sets C90 for MSVC18 tomorrow and will update the patch.
>
> Andrey


_Bool is fine, our C90 support is a superset of C90: it includes things which a conforming implementation is permitted to provide.

However, the following test case is problematic:

  void f() {
    for (int x = 0; x < 10; ++x) {}
    for (int x = 0; x < 10; ++x) {}
  }

This is supported by MSVC 2013 but would be (correctly) rejected by a compiler in C90 mode...
I have a feeling that sticking us in C90 mode would break code...


http://reviews.llvm.org/D17330





More information about the cfe-commits mailing list