@@ -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 }
@@ -2085,8 +2089,10 @@ namespace {
20852089 CS.getASTContext ());
20862090 }
20872091
2088- if (auto favoredTy = CS.getFavoredType (expr->getSubExpr ())) {
2089- CS.setFavoredType (expr, favoredTy);
2092+ if (CS.performanceHacksEnabled ()) {
2093+ if (auto favoredTy = CS.getFavoredType (expr->getSubExpr ())) {
2094+ CS.setFavoredType (expr, favoredTy);
2095+ }
20902096 }
20912097 return CS.getType (expr->getSubExpr ());
20922098 }
@@ -3373,11 +3379,13 @@ namespace {
33733379
33743380 // If we ended up resolving the result type variable to a concrete type,
33753381 // set it as the favored type for this expression.
3376- Type fixedType =
3377- CS.getFixedTypeRecursive (resultType, /* wantRvalue=*/ true );
3378- if (!fixedType->isTypeVariableOrMember ()) {
3379- CS.setFavoredType (expr, fixedType.getPointer ());
3380- resultType = fixedType;
3382+ if (CS.performanceHacksEnabled ()) {
3383+ Type fixedType =
3384+ CS.getFixedTypeRecursive (resultType, /* wantRvalue=*/ true );
3385+ if (!fixedType->isTypeVariableOrMember ()) {
3386+ CS.setFavoredType (expr, fixedType.getPointer ());
3387+ resultType = fixedType;
3388+ }
33813389 }
33823390
33833391 return resultType;
@@ -5184,7 +5192,7 @@ ConstraintSystem::applyPropertyWrapperToParameter(
51845192}
51855193
51865194void ConstraintSystem::optimizeConstraints (Expr *e) {
5187- if (getASTContext (). TypeCheckerOpts . DisableConstraintSolverPerformanceHacks )
5195+ if (! performanceHacksEnabled () )
51885196 return ;
51895197
51905198 SmallVector<Expr *, 16 > linkedExprs;
0 commit comments