Address review comments

This commit is contained in:
Arnold Schwaighofer
2025-11-17 15:52:00 -08:00
parent 02d7fe5110
commit a725de5ba6
3 changed files with 8 additions and 6 deletions

View File

@@ -90,8 +90,9 @@ inline bool isEmbedded(CanType t) {
return t->getASTContext().LangOpts.hasFeature(Feature::Embedded);
}
inline bool isEmbeddedWithoutEmbeddedExitentials(CanType t) {
return t->getASTContext().LangOpts.hasFeature(Feature::Embedded) &&
!t->getASTContext().LangOpts.hasFeature(Feature::EmbeddedExistentials);
auto &langOpts = t->getASTContext().LangOpts;
return langOpts.hasFeature(Feature::Embedded) &&
!langOpts.hasFeature(Feature::EmbeddedExistentials);
}
// Metadata is not generated and not allowed to be referenced in Embedded Swift,
// expect for classes (both generic and non-generic), dynamic self, and

View File

@@ -5318,7 +5318,7 @@ llvm::GlobalValue *IRGenModule::defineTypeMetadata(
: LinkEntity::forTypeMetadata(
concreteType, TypeMetadataAddress::FullMetadata));
if (Context.LangOpts.hasFeature(Feature::Embedded) ) {
if (Context.LangOpts.hasFeature(Feature::Embedded)) {
entity = LinkEntity::forTypeMetadata(concreteType,
TypeMetadataAddress::AddressPoint);
if (Context.LangOpts.hasFeature(Feature::EmbeddedExistentials))

View File

@@ -3387,8 +3387,9 @@ llvm::Value *IRGenFunction::emitTypeMetadataRef(CanType type) {
MetadataResponse
IRGenFunction::emitTypeMetadataRef(CanType type,
DynamicMetadataRequest request) {
if (type->getASTContext().LangOpts.hasFeature(Feature::Embedded) &&
!type->getASTContext().LangOpts.hasFeature(Feature::EmbeddedExistentials) &&
auto &langOpts = type->getASTContext().LangOpts;
if (langOpts.hasFeature(Feature::Embedded) &&
!langOpts.hasFeature(Feature::EmbeddedExistentials) &&
!isMetadataAllowedInEmbedded(type)) {
llvm::errs() << "Metadata pointer requested in embedded Swift for type "
<< type << "\n";
@@ -3408,7 +3409,7 @@ IRGenFunction::emitTypeMetadataRef(CanType type,
if (type->hasArchetype() ||
!shouldTypeMetadataAccessUseAccessor(IGM, type) ||
isa<PackType>(type) ||
type->getASTContext().LangOpts.hasFeature(Feature::Embedded)) {
langOpts.hasFeature(Feature::Embedded)) {
return emitDirectTypeMetadataRef(*this, type, request);
}