@@ -1168,11 +1168,13 @@ namespace {
11681168 /* trailingClosureMatching=*/ std::nullopt ,
11691169 CurDC, fnLocator);
11701170
1171- Type fixedOutputType =
1172- CS.getFixedTypeRecursive (outputTy, /* wantRValue=*/ false );
1173- if (!fixedOutputType->isTypeVariableOrMember ()) {
1174- CS.setFavoredType (anchor, fixedOutputType.getPointer ());
1175- outputTy = fixedOutputType;
1171+ if (CS.performanceHacksEnabled ()) {
1172+ Type fixedOutputType =
1173+ CS.getFixedTypeRecursive (outputTy, /* wantRValue=*/ false );
1174+ if (!fixedOutputType->isTypeVariableOrMember ()) {
1175+ CS.setFavoredType (anchor, fixedOutputType.getPointer ());
1176+ outputTy = fixedOutputType;
1177+ }
11761178 }
11771179
11781180 return outputTy;
@@ -1614,9 +1616,11 @@ namespace {
16141616 }
16151617 }
16161618
1617- if (!knownType->hasPlaceholder ()) {
1618- // Set the favored type for this expression to the known type.
1619- CS.setFavoredType (E, knownType.getPointer ());
1619+ if (CS.performanceHacksEnabled ()) {
1620+ if (!knownType->hasPlaceholder ()) {
1621+ // Set the favored type for this expression to the known type.
1622+ CS.setFavoredType (E, knownType.getPointer ());
1623+ }
16201624 }
16211625 }
16221626 }
@@ -2089,8 +2093,10 @@ namespace {
20892093 CS.getASTContext ());
20902094 }
20912095
2092- if (auto favoredTy = CS.getFavoredType (expr->getSubExpr ())) {
2093- CS.setFavoredType (expr, favoredTy);
2096+ if (CS.performanceHacksEnabled ()) {
2097+ if (auto favoredTy = CS.getFavoredType (expr->getSubExpr ())) {
2098+ CS.setFavoredType (expr, favoredTy);
2099+ }
20942100 }
20952101 return CS.getType (expr->getSubExpr ());
20962102 }
@@ -3377,11 +3383,13 @@ namespace {
33773383
33783384 // If we ended up resolving the result type variable to a concrete type,
33793385 // set it as the favored type for this expression.
3380- Type fixedType =
3381- CS.getFixedTypeRecursive (resultType, /* wantRvalue=*/ true );
3382- if (!fixedType->isTypeVariableOrMember ()) {
3383- CS.setFavoredType (expr, fixedType.getPointer ());
3384- resultType = fixedType;
3386+ if (CS.performanceHacksEnabled ()) {
3387+ Type fixedType =
3388+ CS.getFixedTypeRecursive (resultType, /* wantRvalue=*/ true );
3389+ if (!fixedType->isTypeVariableOrMember ()) {
3390+ CS.setFavoredType (expr, fixedType.getPointer ());
3391+ resultType = fixedType;
3392+ }
33853393 }
33863394
33873395 return resultType;
@@ -5175,7 +5183,7 @@ ConstraintSystem::applyPropertyWrapperToParameter(
51755183}
51765184
51775185void ConstraintSystem::optimizeConstraints (Expr *e) {
5178- if (getASTContext (). TypeCheckerOpts . DisableConstraintSolverPerformanceHacks )
5186+ if (! performanceHacksEnabled () )
51795187 return ;
51805188
51815189 SmallVector<Expr *, 16 > linkedExprs;
0 commit comments