You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Disable ExistentialSpecializer on generic functions.
This is not implemented--we don't substitute the original archetypes
properly or even create a well-formed generic signature.
It doesn't make sense to me for the ExistentialSpecializer to work on
a generic before it has been fully specialized anyway. The premise of
this pass is that the generic specializer will be able to fully
specialize after generating a new "temporary" generic parameter.
Fixes rdar://56923071; [SR-11714]: Compiler crash when generic class is passed as
a parameter to a function accepting a generic class
(cherry picked from commit b38ca0c)
// For this case to be handled by ExistentialSpecializer, GenericSpecializer needs to run first to remove the generic argument.
314
+
//
317
315
// CHECK-LABEL: sil hidden [noinline] @$s21existential_transform8gcp_archySix_SayxGztAA2GPRzlF : $@convention(thin) <T where T : GP> (@in_guaranteed T, @inout Array<T>) -> Int {
318
316
// CHECK: bb0(%0 : $*T, %1 : $*Array<T>):
319
-
// CHECK: debug_value_addr
320
-
// CHECK: debug_value_addr
321
-
// CHECK: alloc_ref
322
-
// CHECK: debug_value
323
-
// CHECK: debug_value
324
-
// CHECK: alloc_stack
325
-
// CHECK: init_existential_addr
326
-
// CHECK: store
327
-
// CHECK: function_ref @$s21existential_transform13wrap_gcp_archySix_AA2GP_pSayxGztAaCRzlFTf4nen_n : $@convention(thin) <τ_0_0 where τ_0_0 : GP><τ_1_0 where τ_1_0 : GP> (@in_guaranteed τ_0_0, @in_guaranteed τ_1_0, @inout Array<τ_0_0>) -> Int
0 commit comments