From 36c49ea9d69e43016e35594e2dc9da65ef4aea61 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 20 Aug 2025 12:26:38 -0400 Subject: [PATCH 1/2] AST: Allow substitution limits >= 32767 --- include/swift/AST/InFlightSubstitution.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/swift/AST/InFlightSubstitution.h b/include/swift/AST/InFlightSubstitution.h index 6e497b2c51afc..e4bd9cc0b1104 100644 --- a/include/swift/AST/InFlightSubstitution.h +++ b/include/swift/AST/InFlightSubstitution.h @@ -35,9 +35,9 @@ class InFlightSubstitution { LookupConformanceFn BaselineLookupConformance; SubstOptions Options; RecursiveTypeProperties Props; - unsigned RemainingCount : 15; + unsigned RemainingCount : 31; unsigned InitLimit : 1; - unsigned RemainingDepth : 15; + unsigned RemainingDepth : 31; unsigned LimitReached : 1; struct ActivePackExpansion { From d80ad918d998548a26cbc5ddc28cc57713db6ba1 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 20 Aug 2025 16:19:19 -0400 Subject: [PATCH 2/2] AST: Tweak substitution limits again Fixes rdar://158608098. --- include/swift/Basic/LangOptions.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/swift/Basic/LangOptions.h b/include/swift/Basic/LangOptions.h index d1bc0292821f0..3e807661d38fe 100644 --- a/include/swift/Basic/LangOptions.h +++ b/include/swift/Basic/LangOptions.h @@ -615,11 +615,11 @@ namespace swift { /// Maximum nesting depth for type substitution operations, to prevent /// runaway recursion. - unsigned MaxSubstitutionDepth = 1000; + unsigned MaxSubstitutionDepth = 500; /// Maximum step count for type substitution operations, to prevent /// runaway recursion. - unsigned MaxSubstitutionCount = 32000; + unsigned MaxSubstitutionCount = 120000; /// Enable implicit lifetime dependence for ~Escapable return types. bool EnableExperimentalLifetimeDependenceInference = false;