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
Fixes getSpecializationLevelRecursive to handle recursive manglings caused by interleaving CapturePropagation and ClosureSpecialize passes.
For some reason, only the first closure parameter was checked for recursion. We need to handle patterns like this:
kind=FunctionSignatureSpecialization
kind=SpecializationPassID, index=3
kind=FunctionSignatureSpecializationParam
kind=FunctionSignatureSpecializationParam
kind=FunctionSignatureSpecializationParamKind, index=0
kind=FunctionSignatureSpecializationParamPayload, text="$s4test10ExpressionO8contains5whereS3bXE_tFSbACXEfU_S2bXEfU_36$s4test12IndirectEnumVACycfcS2bXEfU_Tf3npf_n"
I fixed the logic so we now check for recursion on all closure parameters and bail out on unrecognized mangling formats.
For reference, see summary.sil in
Infinitely recursive closure specialization #61955#61955
Fixes rdar://101589190 (Swift Compiler hangs when building this code for release)
0 commit comments