On Wed, May 11, 2011 at 6:25 PM, Douglas Gregor <[email protected]> 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 _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
