[cfe-commits] r131201 - in /cfe/trunk: lib/Sema/SemaCXXCast.cpp test/SemaCXX/MicrosoftExtensions.cpp

Francois Pichet pichet2000 at gmail.com
Wed May 11 15:33:43 PDT 2011


On Wed, May 11, 2011 at 6:25 PM, Douglas Gregor <dgregor at apple.com> wrote:
>
> On May 11, 2011, at 3:13 PM, Francois Pichet wrote:
>
>> Author: fpichet
>> Date: Wed May 11 17:13:54 2011
>> New Revision: 131201
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=131201&view=rev
>> Log:
>> In Microsoft mode, allow conversion from pointer to integral type no matter what size the integral type is. Necessary to parse MFC code.
>>
>> Example:
>> void f(char *ptr) {
>>  char var = (char)ptr;
>> }
>>
>> Modified:
>>    cfe/trunk/lib/Sema/SemaCXXCast.cpp
>>    cfe/trunk/test/SemaCXX/MicrosoftExtensions.cpp
>>
>> Modified: cfe/trunk/lib/Sema/SemaCXXCast.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCXXCast.cpp?rev=131201&r1=131200&r2=131201&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaCXXCast.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaCXXCast.cpp Wed May 11 17:13:54 2011
>> @@ -1514,9 +1514,11 @@
>>   if (DestType->isIntegralType(Self.Context)) {
>>     assert(srcIsPtr && "One type must be a pointer");
>>     // C++ 5.2.10p4: A pointer can be explicitly converted to any integral
>> -    //   type large enough to hold it.
>> -    if (Self.Context.getTypeSize(SrcType) >
>> -        Self.Context.getTypeSize(DestType)) {
>> +    //   type large enough to hold it; except in Microsoft mode, where the
>> +    //   integral type size doesn't matter.
>> +    if ((Self.Context.getTypeSize(SrcType) >
>> +         Self.Context.getTypeSize(DestType)) &&
>> +         !Self.getLangOptions().Microsoft) {
>>       msg = diag::err_bad_reinterpret_cast_small_int;
>>       return TC_Failed;
>>     }
>
> Should this conversion also be allowed with C code under -fms-extensions?
>

yes see r131202




More information about the cfe-commits mailing list