[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