Skip to content

Commit 4c21623

Browse files
committed
[IRGen] Ensure that we emit metadata for types referenced from mangled names.
1 parent 2b44e85 commit 4c21623

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

lib/IRGen/GenReflection.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,21 @@ class PrintMetadataSource
165165
};
166166

167167
llvm::Constant *IRGenModule::getTypeRef(CanType type, MangledTypeRefRole role) {
168+
switch (role) {
169+
case MangledTypeRefRole::DefaultAssociatedTypeWitness:
170+
case MangledTypeRefRole::Metadata:
171+
// Note that we're using all of the nominal types referenced by this type.
172+
type.findIf([&](CanType type) -> bool {
173+
if (auto nominal = type.getAnyNominal())
174+
this->IRGen.noteUseOfTypeMetadata(nominal);
175+
return false;
176+
});
177+
break;
178+
179+
case MangledTypeRefRole::Reflection:
180+
break;
181+
}
182+
168183
IRGenMangler Mangler;
169184
auto SymbolicName = Mangler.mangleTypeForReflection(*this, type);
170185
return getAddrOfStringForTypeRef(SymbolicName, role);

0 commit comments

Comments
 (0)