@@ -219,8 +219,24 @@ class SILCloner : protected SILInstructionVisitor<ImplClass> {
219
219
}
220
220
221
221
SubstitutionMap getOpSubstitutionMap (SubstitutionMap Subs) {
222
- return asImpl ().remapSubstitutionMap (Subs)
222
+ auto substSubs = asImpl ().remapSubstitutionMap (Subs)
223
223
.getCanonical (/* canonicalizeSignature*/ false );
224
+
225
+ #ifndef NDEBUG
226
+ for (auto substConf : substSubs.getConformances ()) {
227
+ if (substConf.isInvalid ()) {
228
+ llvm::errs () << " Invalid conformance in SIL cloner:\n " ;
229
+ if (Functor.SubsMap )
230
+ Functor.SubsMap ->dump (llvm::errs ());
231
+ llvm::errs () << " \n substitution map:\n " ;
232
+ Subs.dump (llvm::errs ());
233
+ llvm::errs () << " \n " ;
234
+ abort ();
235
+ }
236
+ }
237
+ #endif
238
+
239
+ return substSubs;
224
240
}
225
241
226
242
SILType getOpType (SILType Ty) {
@@ -335,7 +351,22 @@ class SILCloner : protected SILInstructionVisitor<ImplClass> {
335
351
336
352
ProtocolConformanceRef getOpConformance (Type ty,
337
353
ProtocolConformanceRef conformance) {
338
- return asImpl ().remapConformance (ty, conformance);
354
+ auto substConf = asImpl ().remapConformance (ty, conformance);
355
+
356
+ #ifndef NDEBUG
357
+ if (substConf.isInvalid ()) {
358
+ llvm::errs () << " Invalid conformance in SIL cloner:\n " ;
359
+ if (Functor.SubsMap )
360
+ Functor.SubsMap ->dump (llvm::errs ());
361
+ llvm::errs () << " \n conformance:\n " ;
362
+ conformance.dump (llvm::errs ());
363
+ llvm::errs () << " original type:\n " ;
364
+ ty.dump (llvm::errs ());
365
+ abort ();
366
+ }
367
+ #endif
368
+
369
+ return substConf;
339
370
}
340
371
341
372
ArrayRef<ProtocolConformanceRef>
0 commit comments