Teach the generic specializer how to create SILWitnessTable declarations if a specialized conformance does not have a witness table.

This also teaches IRGen not to emit WitnessTable declarations. This
causes them to be left as unknown symbols in the resulting executable.

Swift SVN r15361
This commit is contained in:
Michael Gottesman
2014-03-22 05:05:47 +00:00
parent 084d468236
commit 3ad6f33202
9 changed files with 115 additions and 0 deletions

View File

@@ -2694,6 +2694,10 @@ ProtocolInfo::getConformance(IRGenModule &IGM, CanType concreteType,
}
void IRGenModule::emitSILWitnessTable(SILWitnessTable *wt) {
// Don't emit a witness table if it is a declaration.
if (wt->isDeclaration())
return;
// Build the witnesses.
SmallVector<llvm::Constant*, 32> witnesses;
WitnessTableBuilder(*this, witnesses, wt)