[PATCH] [MSVC2012] Allow 'mutable' references (fix for http://llvm.org/PR22444)

Nico Weber thakis at chromium.org
Tue Feb 3 09:42:42 PST 2015


Out of interest, which header file? We are able to parse all of Chromium
with MSVC2012 a while ago, and that uses lots of Windows headers.

On Tue, Feb 3, 2015 at 2:32 AM, Alexey Bataev <a.bataev at hotmail.com> wrote:

> Hi rsmith,
>
> Some standard header files from MSVC2012 use 'mutable' on references,
> though it is directly prohibited by the standard.
>
> http://reviews.llvm.org/D7370
>
> Files:
>   lib/Sema/SemaDecl.cpp
>   test/SemaCXX/ms_mutable_reference_member.cpp
>
> Index: lib/Sema/SemaDecl.cpp
> ===================================================================
> --- lib/Sema/SemaDecl.cpp
> +++ lib/Sema/SemaDecl.cpp
> @@ -12347,7 +12347,7 @@
>    // Check that 'mutable' is consistent with the type of the declaration.
>    if (!InvalidDecl && Mutable) {
>      unsigned DiagID = 0;
> -    if (T->isReferenceType())
> +    if (!getLangOpts().MSVCCompat && T->isReferenceType())
>        DiagID = diag::err_mutable_reference;
>      else if (T.isConstQualified())
>        DiagID = diag::err_mutable_const;
> Index: test/SemaCXX/ms_mutable_reference_member.cpp
> ===================================================================
> --- test/SemaCXX/ms_mutable_reference_member.cpp
> +++ test/SemaCXX/ms_mutable_reference_member.cpp
> @@ -0,0 +1,14 @@
> +// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-compatibility
> +// expected-no-diagnostics
> +
> +struct S {
> +  mutable int &a;
> +  S(int &b) : a(b) {}
> +};
> +
> +int main() {
> +  int a = 0;
> +  const S s(a);
> +  s.a = 10;
> +  return s.a + a;
> +}
>
> EMAIL PREFERENCES
>   http://reviews.llvm.org/settings/panel/emailpreferences/
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150203/ccf3e66b/attachment.html>


More information about the cfe-commits mailing list