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

Richard Smith richard at metafoo.co.uk
Tue Feb 3 09:46:57 PST 2015


See PR22444: <future>.
On 3 Feb 2015 09:42, "Nico Weber" <thakis at chromium.org> wrote:

> 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/eb55b6bb/attachment.html>


More information about the cfe-commits mailing list