Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:Slot

38   /// We want to use 'dest' as the return slot except under two
40 /// - The destination slot requires garbage collection, so we
42 /// - The destination slot is potentially aliased.
243 /// directly into the return value slot. Otherwise, a final move
544 AggValueSlot Slot = EnsureSlot(E->getType());
545 CGF.EmitAggExpr(E->getInitializer(), Slot);
929 // of the LHS might need to create a destination slot. That's fine
930 // with us, and we can safely emit the RHS into the same slot, but
963 // Ensure that we have a slot, but if we already do, remember
980 AggValueSlot Slot = EnsureSlot(E->getType());
981 CGF.EmitCXXConstructExpr(E, Slot);
986 AggValueSlot Slot = EnsureSlot(E->getType());
987 CGF.EmitLambdaExpr(E, Slot);
998 AggValueSlot Slot = EnsureSlot(T);
999 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddr(), T));
1004 AggValueSlot Slot = EnsureSlot(T);
1005 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddr(), T));
1076 // If the destination slot is already zeroed out before the aggregate is
1317 static void CheckAggExprForMemSetUse(AggValueSlot &Slot
1319 // If the slot is already known to be zeroed, nothing to do. Don't mess with
1321 if (Slot.isZeroed() || Slot.isVolatile() || Slot.getAddr() == nullptr)
1349 llvm::Value *Loc = Slot.getAddr();
1355 // Tell the AggExprEmitter that the slot is known zero.
1356 Slot.setZeroed();
1366 void CodeGenFunction::EmitAggExpr(const Expr *E, AggValueSlot Slot) {
1369 assert((Slot.getAddr() != nullptr || Slot.isIgnored()) &&
1370 "slot has bits but no address");
1372 // Optimize the slot if possible.
1373 CheckAggExprForMemSetUse(Slot, E, *this);
1375 AggExprEmitter(*this, Slot).Visit(const_cast<Expr*>(E));