[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