Skip to content

Commit 21e34e3

Browse files
authored
Merge pull request #84400 from slavapestov/prepared-overloads-flag
Sema: Add -solver-{enable,disable}-prepared-overloads frontend flags
2 parents e6409d7 + 2deb5ff commit 21e34e3

File tree

4 files changed

+14
-1
lines changed

4 files changed

+14
-1
lines changed

include/swift/Basic/LangOptions.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,9 @@ namespace swift {
10111011

10121012
/// Disable the component splitter phase of the expression type checker.
10131013
bool SolverDisableSplitter = false;
1014+
1015+
/// Enable the experimental "prepared overloads" optimization.
1016+
bool SolverEnablePreparedOverloads = false;
10141017
};
10151018

10161019
/// Options for controlling the behavior of the Clang importer.

include/swift/Option/FrontendOptions.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,12 @@ def solver_scope_threshold_EQ : Joined<["-"], "solver-scope-threshold=">,
883883
def solver_trail_threshold_EQ : Joined<["-"], "solver-trail-threshold=">,
884884
HelpText<"Expression type checking trail change limit">;
885885

886+
def solver_disable_prepared_overloads : Flag<["-"], "solver-disable-prepared-overloads">,
887+
HelpText<"Disable experimental prepared overloads optimization">;
888+
889+
def solver_enable_prepared_overloads : Flag<["-"], "solver-enable-prepared-overloads">,
890+
HelpText<"Enable experimental prepared overloads optimization">;
891+
886892
def solver_disable_splitter : Flag<["-"], "solver-disable-splitter">,
887893
HelpText<"Disable the component splitter phase of expression type checking">;
888894

lib/Frontend/CompilerInvocation.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2000,6 +2000,10 @@ static bool ParseTypeCheckerArgs(TypeCheckerOptions &Opts, ArgList &Args,
20002000
if (Args.getLastArg(OPT_solver_disable_splitter))
20012001
Opts.SolverDisableSplitter = true;
20022002

2003+
if (Args.hasArg(OPT_solver_enable_prepared_overloads) ||
2004+
Args.hasArg(OPT_solver_disable_prepared_overloads))
2005+
Opts.SolverEnablePreparedOverloads = Args.hasArg(OPT_solver_enable_prepared_overloads);
2006+
20032007
if (FrontendOpts.RequestedAction == FrontendOptions::ActionType::Immediate)
20042008
Opts.DeferToRuntime = true;
20052009

lib/Sema/CSSimplify.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16737,7 +16737,7 @@ ConstraintSystem::simplifyConstraint(const Constraint &constraint) {
1673716737
}
1673816738

1673916739
// FIXME: Transitional hack.
16740-
bool enablePreparedOverloads = false;
16740+
bool enablePreparedOverloads = getASTContext().TypeCheckerOpts.SolverEnablePreparedOverloads;
1674116741

1674216742
auto *preparedOverload = constraint.getPreparedOverload();
1674316743
if (!preparedOverload) {

0 commit comments

Comments
 (0)