Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:Slot

39   /// We want to use 'dest' as the return slot except under two
41 /// - The destination slot requires garbage collection, so we
43 /// - The destination slot is potentially aliased.
252 /// directly into the return value slot. Otherwise, a final move
555 AggValueSlot Slot = EnsureSlot(E->getType());
556 CGF.EmitAggExpr(E->getInitializer(), Slot);
948 // of the LHS might need to create a destination slot. That's fine
949 // with us, and we can safely emit the RHS into the same slot, but
982 // Ensure that we have a slot, but if we already do, remember
999 AggValueSlot Slot = EnsureSlot(E->getType());
1000 CGF.EmitCXXConstructExpr(E, Slot);
1005 AggValueSlot Slot = EnsureSlot(E->getType());
1006 CGF.EmitLambdaExpr(E, Slot);
1017 AggValueSlot Slot = EnsureSlot(T);
1018 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddress(), T));
1023 AggValueSlot Slot = EnsureSlot(T);
1024 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddress(), T));
1098 // If the destination slot is already zeroed out before the aggregate is
1355 static void CheckAggExprForMemSetUse(AggValueSlot &Slot, const Expr *E,
1357 // If the slot is already known to be zeroed, nothing to do. Don't mess with
1359 if (Slot.isZeroed() || Slot.isVolatile() || !Slot.getAddress().isValid())
1385 Address Loc = Slot.getAddress();
1389 // Tell the AggExprEmitter that the slot is known zero.
1390 Slot.setZeroed();
1400 void CodeGenFunction::EmitAggExpr(const Expr *E, AggValueSlot Slot) {
1403 assert((Slot.getAddress().isValid() || Slot.isIgnored()) &&
1404 "slot has bits but no address");
1406 // Optimize the slot if possible.
1407 CheckAggExprForMemSetUse(Slot, E, *this);
1409 AggExprEmitter(*this, Slot, Slot.isIgnored()).Visit(const_cast<Expr*>(E));