[cfe-commits] r77490 - in /cfe/trunk: lib/CodeGen/CGExpr.cpp lib/Sema/Sema.h lib/Sema/SemaExpr.cpp test/CodeGenCXX/constructor-init.cpp
Fariborz Jahanian
fjahanian at apple.com
Wed Jul 29 12:42:06 PDT 2009
On Jul 29, 2009, at 11:52 AM, Douglas Gregor wrote:
>
> On Jul 29, 2009, at 11:40 AM, Fariborz Jahanian wrote:
>
>> Author: fjahanian
>> Date: Wed Jul 29 13:40:24 2009
>> New Revision: 77490
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=77490&view=rev
>> Log:
>> Patch to provide cast of objects in member access
>> excpression, if needed, and remove some ir-gen code
>> now unnencessary.
>
> Thanks, that's much cleaner! There's a comment below:
>
>> +/// \brief Cast member's object to its own class if necessary.
>> +void
>> +Sema::PerformObjectMemberConversion(Expr *&From, NamedDecl
>> *Member) {
>> + if (FieldDecl *FD = dyn_cast<FieldDecl>(Member))
>> + if (CXXRecordDecl *RD =
>> + dyn_cast<CXXRecordDecl>(FD->getDeclContext())) {
>> + QualType DestType =
>> + Context.getCanonicalType(Context.getTypeDeclType(RD));
>> + if (!DestType->isDependentType() &&
>> + !From->getType()->isDependentType()) {
>> + if (From->getType()->getAsPointerType())
>> + DestType = Context.getPointerType(DestType);
>> + ImpCastExprToType(From, DestType, /*isLvalue=*/true);
>> + }
>> + }
>> +}
>
> This routine should call CheckDerivedToBaseConversion to make sure
> that the conversion is valid (e.g., it doesn't convert to an
> inaccessible or ambiguous base class).
Done in :http://llvm.org/viewvc/llvm-project?view=rev&revision=77497
Thanks, Fariborz
>
>
> - Doug
More information about the cfe-commits
mailing list