Metadata emission for extended existential type shapes

This commit is contained in:
John McCall
2022-04-11 15:41:01 -04:00
parent f7290c9bfd
commit 6385934d7e
11 changed files with 705 additions and 97 deletions

View File

@@ -29,6 +29,7 @@ namespace llvm {
namespace swift {
class AbstractFunctionDecl;
struct ExistentialTypeGeneralization;
class FileUnit;
class FuncDecl;
enum class ResilienceExpansion : unsigned;
@@ -197,6 +198,13 @@ namespace irgen {
ProtocolDecl *opaqueTypeRequiresWitnessTable(
OpaqueTypeDecl *opaque, const Requirement &req);
/// Emit the extended existential type shape for the given existential
/// type generalization.
std::pair<llvm::Constant *, /*unique*/ bool>
emitExtendedExistentialTypeShape(IRGenModule &IGM,
const ExistentialTypeGeneralization &shape,
unsigned metatypeDepth);
} // end namespace irgen
} // end namespace swift