@@ -1168,11 +1168,13 @@ namespace {
1168
1168
/* trailingClosureMatching=*/ std::nullopt ,
1169
1169
CurDC, fnLocator);
1170
1170
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
+ }
1176
1178
}
1177
1179
1178
1180
return outputTy;
@@ -1614,9 +1616,11 @@ namespace {
1614
1616
}
1615
1617
}
1616
1618
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
+ }
1620
1624
}
1621
1625
}
1622
1626
}
@@ -2089,8 +2093,10 @@ namespace {
2089
2093
CS.getASTContext ());
2090
2094
}
2091
2095
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
+ }
2094
2100
}
2095
2101
return CS.getType (expr->getSubExpr ());
2096
2102
}
@@ -3377,11 +3383,13 @@ namespace {
3377
3383
3378
3384
// If we ended up resolving the result type variable to a concrete type,
3379
3385
// 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
+ }
3385
3393
}
3386
3394
3387
3395
return resultType;
@@ -5175,7 +5183,7 @@ ConstraintSystem::applyPropertyWrapperToParameter(
5175
5183
}
5176
5184
5177
5185
void ConstraintSystem::optimizeConstraints (Expr *e) {
5178
- if (getASTContext (). TypeCheckerOpts . DisableConstraintSolverPerformanceHacks )
5186
+ if (! performanceHacksEnabled () )
5179
5187
return ;
5180
5188
5181
5189
SmallVector<Expr *, 16 > linkedExprs;
0 commit comments