diff --git a/llvm/include/llvm/CodeGen/RegAllocFast.h b/llvm/include/llvm/CodeGen/RegAllocFast.h index b2ca9e10bf464..9fdaca09e4317 100644 --- a/llvm/include/llvm/CodeGen/RegAllocFast.h +++ b/llvm/include/llvm/CodeGen/RegAllocFast.h @@ -14,18 +14,18 @@ namespace llvm { -struct RegAllocFastPassOptions { - RegAllocFilterFunc Filter = nullptr; - StringRef FilterName = "all"; - bool ClearVRegs = true; -}; - class RegAllocFastPass : public PassInfoMixin { - RegAllocFastPassOptions Opts; - public: - RegAllocFastPass(RegAllocFastPassOptions Opts = RegAllocFastPassOptions()) - : Opts(Opts) {} + struct Options { + RegAllocFilterFunc Filter; + StringRef FilterName; + bool ClearVRegs; + Options(RegAllocFilterFunc F = nullptr, StringRef FN = "all", + bool CV = true) + : Filter(F), FilterName(FN), ClearVRegs(CV) {} + }; + + RegAllocFastPass(Options Opts = Options()) : Opts(Opts) {} MachineFunctionProperties getRequiredProperties() const { return MachineFunctionProperties().set( @@ -52,6 +52,9 @@ class RegAllocFastPass : public PassInfoMixin { function_ref MapClassName2PassName); static bool isRequired() { return true; } + +private: + Options Opts; }; } // namespace llvm diff --git a/llvm/include/llvm/Passes/MachinePassRegistry.def b/llvm/include/llvm/Passes/MachinePassRegistry.def index 373bd047e2395..8de02e951ba52 100644 --- a/llvm/include/llvm/Passes/MachinePassRegistry.def +++ b/llvm/include/llvm/Passes/MachinePassRegistry.def @@ -189,7 +189,7 @@ MACHINE_FUNCTION_PASS("verify", MachineTraceMetricsVerifi #endif MACHINE_FUNCTION_PASS_WITH_PARAMS( "regallocfast", "RegAllocFastPass", - [](RegAllocFastPassOptions Opts) { return RegAllocFastPass(Opts); }, + [](RegAllocFastPass::Options Opts) { return RegAllocFastPass(Opts); }, [PB = this](StringRef Params) { return parseRegAllocFastPassOptions(*PB, Params); }, diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 5bb2e7d0abdd9..3a078985c33e4 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -1332,9 +1332,9 @@ Expected> parseInternalizeGVs(StringRef Params) { return Expected>(std::move(PreservedGVs)); } -Expected +Expected parseRegAllocFastPassOptions(PassBuilder &PB, StringRef Params) { - RegAllocFastPassOptions Opts; + RegAllocFastPass::Options Opts; while (!Params.empty()) { StringRef ParamName; std::tie(ParamName, Params) = Params.split(';');