static ManagedValue emitSelfForMemberInit(SILGenFunction &SGF, SILLocation loc, VarDecl *selfDecl) { CanType selfFormalType = selfDecl->getType()->getCanonicalType(); if (selfFormalType->hasReferenceSemantics()) return SGF.emitRValueForDecl(loc, selfDecl, selfFormalType, AccessSemantics::DirectToStorage, SGFContext::AllowImmediatePlusZero) .getAsSingleValue(SGF, loc); else return SGF.emitAddressOfLocalVarDecl(loc, selfDecl, selfFormalType, SGFAccessKind::Write); }