ComplexValueTy ComplexExprEmitter::VisitMemberExpr(const MemberExpr *E) { auto Val = CGF.EmitAggregateExpr(E->getTarget()); return CGF.EmitComplexLoad(CGF.EmitAggregateMember(Val.getAggregateAddr(), E->getField()), Val.isVolatileQualifier()); }
void CodeGenFunction::EmitAggregateAssignment(const Expr *LHS, const Expr *RHS) { auto Val = EmitAggregateExpr(RHS); auto Dest = EmitLValue(LHS); Builder.CreateStore(Builder.CreateLoad(Val.getAggregateAddr(), Val.isVolatileQualifier()), Dest.getPointer(), Dest.isVolatileQualifier()); }
CharacterValueTy CharacterExprEmitter::VisitMemberExpr(const MemberExpr *E) { auto Val = CGF.EmitAggregateExpr(E->getTarget()); return CGF.GetCharacterValueFromPtr(CGF.EmitAggregateMember(Val.getAggregateAddr(), E->getField()), E->getType()); }
RValueTy AggregateExprEmitter::VisitMemberExpr(const MemberExpr *E) { auto Val = EmitExpr(E->getTarget()); return RValueTy::getAggregate(CGF.EmitAggregateMember(Val.getAggregateAddr(), E->getField()), Val.isVolatileQualifier()); }