Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:Slot

46   /// We want to use 'dest' as the return slot except under two
48 /// - The destination slot requires garbage collection, so we
50 /// - The destination slot is potentially aliased.
280 /// directly into the return value slot. Otherwise, a final move
590 AggValueSlot Slot = EnsureSlot(E->getType());
591 CGF.EmitAggExpr(E->getInitializer(), Slot);
973 // of the LHS might need to create a destination slot. That's fine
974 // with us, and we can safely emit the RHS into the same slot, but
1003 // Ensure that we have a slot, but if we already do, remember
1020 AggValueSlot Slot = EnsureSlot(E->getType());
1021 CGF.EmitCXXConstructExpr(E, Slot);
1026 AggValueSlot Slot = EnsureSlot(E->getType());
1027 CGF.EmitLambdaExpr(E, Slot);
1038 AggValueSlot Slot = EnsureSlot(T);
1039 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddr(), T));
1044 AggValueSlot Slot = EnsureSlot(T);
1045 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddr(), T));
1116 // If the destination slot is already zeroed out before the aggregate is
1363 static void CheckAggExprForMemSetUse(AggValueSlot &Slot, const Expr *E,
1365 // If the slot is already known to be zeroed, nothing to do. Don't mess with
1367 if (Slot.isZeroed() || Slot.isVolatile() || Slot.getAddr() == 0) return;
1394 llvm::Value *Loc = Slot.getAddr();
1400 // Tell the AggExprEmitter that the slot is known zero.
1401 Slot.setZeroed();
1411 void CodeGenFunction::EmitAggExpr(const Expr *E, AggValueSlot Slot) {
1414 assert((Slot.getAddr() != 0 || Slot.isIgnored()) &&
1415 "slot has bits but no address");
1417 // Optimize the slot if possible.
1418 CheckAggExprForMemSetUse(Slot, E, *this);
1420 AggExprEmitter(*this, Slot).Visit(const_cast<Expr*>(E));