diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-26 23:28:39 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-26 23:28:39 +0800 |
| commit | a72a7a4323fb6eef8e15cc2f1229bcca14879e94 (patch) | |
| tree | 5768e6cd3ad0a025128d9bf7f76a8ee7afe22c12 | |
| parent | 7b3dcced70be227bb43e71d84d11a2f15fb25072 (diff) | |
| download | rcc-project-a72a7a4323fb6eef8e15cc2f1229bcca14879e94.tar.gz rcc-project-a72a7a4323fb6eef8e15cc2f1229bcca14879e94.tar.xz | |
[CodeGen] Centralize machine pass property validation
24 files changed, 0 insertions, 169 deletions
diff --git a/backend/lib/CodeGen/GlobalISel/Combiner.cpp b/backend/lib/CodeGen/GlobalISel/Combiner.cpp index 6d65a50..08b471a 100644 --- a/backend/lib/CodeGen/GlobalISel/Combiner.cpp +++ b/backend/lib/CodeGen/GlobalISel/Combiner.cpp @@ -21,9 +21,6 @@ const MachinePassContract &GlobalISelCombinerPass::contract() const noexcept { Expected<MachinePassResult> GlobalISelCombinerPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) - return makeUnexpected(ErrorCode::VerificationError, - "GlobalISel combiner input does not satisfy its stage contract"); auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/GlobalISel/InstructionSelect.cpp b/backend/lib/CodeGen/GlobalISel/InstructionSelect.cpp index 995a9a0..66bbff2 100644 --- a/backend/lib/CodeGen/GlobalISel/InstructionSelect.cpp +++ b/backend/lib/CodeGen/GlobalISel/InstructionSelect.cpp @@ -152,17 +152,6 @@ void combineFingerprint(std::uint64_t &State, std::uint64_t Value) noexcept { return Result; } -[[nodiscard]] Expected<void> requireProperties(const MachineFunction &Function, - const MachinePassContract &Contract) { - const MachineFunctionProperties Missing = Contract.Requires.missingFrom(Function.properties()); - if (!Missing.empty()) { - return makeUnexpected(ErrorCode::VerificationError, - "pass '" + Contract.Name + - "' requires properties: " + Missing.toString()); - } - return {}; -} - [[nodiscard]] Error passFailure(std::string Message, ErrorCode Code = ErrorCode::VerificationError) { return Error(Code, std::move(Message)); @@ -225,10 +214,6 @@ Expected<MachinePassResult> InstructionSelect::run(MachineFunction &Function, if (Info == nullptr) return std::unexpected(passFailure("instruction select has no target behavior interface", ErrorCode::InvalidArgument)); - auto Required = requireProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); - auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/GlobalISel/Legalizer.cpp b/backend/lib/CodeGen/GlobalISel/Legalizer.cpp index 8f3f06f..ca31d56 100644 --- a/backend/lib/CodeGen/GlobalISel/Legalizer.cpp +++ b/backend/lib/CodeGen/GlobalISel/Legalizer.cpp @@ -177,17 +177,6 @@ private: return PostOrder; } -[[nodiscard]] Expected<void> requireProperties(const MachineFunction &Function, - const MachinePassContract &Contract) { - const MachineFunctionProperties Missing = Contract.Requires.missingFrom(Function.properties()); - if (!Missing.empty()) { - return makeUnexpected(ErrorCode::VerificationError, - "pass '" + Contract.Name + - "' requires properties: " + Missing.toString()); - } - return {}; -} - [[nodiscard]] Error passFailure(std::string Message, ErrorCode Code = ErrorCode::VerificationError) { return Error(Code, std::move(Message)); @@ -267,10 +256,6 @@ Expected<MachinePassResult> Legalizer::run(MachineFunction &Function, if (Info == nullptr) return std::unexpected( passFailure("legalizer has no target behavior interface", ErrorCode::InvalidArgument)); - auto Required = requireProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); - if (AbortMode != GlobalISelAbortMode::Enable) { if (AbortMode != GlobalISelAbortMode::Disable && AbortMode != GlobalISelAbortMode::DisableWithDiagnostic) { diff --git a/backend/lib/CodeGen/GlobalISel/RegBankSelect.cpp b/backend/lib/CodeGen/GlobalISel/RegBankSelect.cpp index a5747c3..3b7932b 100644 --- a/backend/lib/CodeGen/GlobalISel/RegBankSelect.cpp +++ b/backend/lib/CodeGen/GlobalISel/RegBankSelect.cpp @@ -56,17 +56,6 @@ registerConfigurationFingerprint(const MachineRegisterInfo &RegInfo) noexcept { return Result; } -[[nodiscard]] Expected<void> requireProperties(const MachineFunction &Function, - const MachinePassContract &Contract) { - const MachineFunctionProperties Missing = Contract.Requires.missingFrom(Function.properties()); - if (!Missing.empty()) { - return makeUnexpected(ErrorCode::VerificationError, - "pass '" + Contract.Name + - "' requires properties: " + Missing.toString()); - } - return {}; -} - [[nodiscard]] Expected<void> restoreRegisterConfiguration( MachineRegisterInfo &RegInfo, const std::vector<std::pair<Register, std::pair<std::optional<RegisterBankID>, @@ -299,10 +288,6 @@ Expected<MachinePassResult> RegBankSelect::run(MachineFunction &Function, if (Info == nullptr) return std::unexpected(passFailure("register-bank select has no target behavior interface", ErrorCode::InvalidArgument)); - auto Required = requireProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); - MachinePassResult Result; MachineRegisterInfo &RegInfo = Function.registerInfo(); const std::uint64_t RegisterConfigurationBefore = registerConfigurationFingerprint(RegInfo); diff --git a/backend/lib/CodeGen/LiveVariables.cpp b/backend/lib/CodeGen/LiveVariables.cpp index 3c91cfb..5efdbd4 100644 --- a/backend/lib/CodeGen/LiveVariables.cpp +++ b/backend/lib/CodeGen/LiveVariables.cpp @@ -923,11 +923,6 @@ const MachinePassContract &RebuildMachineLivenessPass::contract() const noexcept Expected<MachinePassResult> RebuildMachineLivenessPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &) { - const MachineFunctionProperties Missing = contract().Requires.missingFrom(Function.properties()); - if (!Missing.empty()) { - return makeUnexpected(ErrorCode::VerificationError, - "RebuildMachineLiveness requires properties: " + Missing.toString()); - } auto Applied = rebuildMachineLiveness(Function, Target); if (!Applied) return std::unexpected(Applied.error()); diff --git a/backend/lib/CodeGen/MachineBranchOptimization.cpp b/backend/lib/CodeGen/MachineBranchOptimization.cpp index 07a67ed..e03b0d9 100644 --- a/backend/lib/CodeGen/MachineBranchOptimization.cpp +++ b/backend/lib/CodeGen/MachineBranchOptimization.cpp @@ -581,10 +581,6 @@ const MachinePassContract &MachineBranchOptimizationPass::contract() const noexc Expected<MachinePassResult> MachineBranchOptimizationPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "branch folding requires PHI-free MachineIR"); - } auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachineCSE.cpp b/backend/lib/CodeGen/MachineCSE.cpp index 30129bc..50dca0e 100644 --- a/backend/lib/CodeGen/MachineCSE.cpp +++ b/backend/lib/CodeGen/MachineCSE.cpp @@ -293,10 +293,6 @@ const MachinePassContract &MachineCSEPass::contract() const noexcept { Expected<MachinePassResult> MachineCSEPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "machine CSE requires selected SSA MachineIR"); - } auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachineCombiner.cpp b/backend/lib/CodeGen/MachineCombiner.cpp index 1c0bc62..55bdc00 100644 --- a/backend/lib/CodeGen/MachineCombiner.cpp +++ b/backend/lib/CodeGen/MachineCombiner.cpp @@ -204,10 +204,6 @@ const MachinePassContract &MachineCombinerPass::contract() const noexcept { Expected<MachinePassResult> MachineCombinerPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "machine combiner input does not satisfy its pass contract"); - } auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachineCopyPropagation.cpp b/backend/lib/CodeGen/MachineCopyPropagation.cpp index b4fce2b..f5736b8 100644 --- a/backend/lib/CodeGen/MachineCopyPropagation.cpp +++ b/backend/lib/CodeGen/MachineCopyPropagation.cpp @@ -303,10 +303,6 @@ const MachinePassContract &MachineCopyPropagationPass::contract() const noexcept Expected<MachinePassResult> MachineCopyPropagationPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "machine COPY propagation has unmet stage properties"); - } auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachineDCE.cpp b/backend/lib/CodeGen/MachineDCE.cpp index 87c15d9..6681bc1 100644 --- a/backend/lib/CodeGen/MachineDCE.cpp +++ b/backend/lib/CodeGen/MachineDCE.cpp @@ -111,11 +111,6 @@ const MachinePassContract &MachineDCEPass::contract() const noexcept { Expected<MachinePassResult> MachineDCEPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "machine DCE requires a selected machine function"); - } - auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachineFinalization.cpp b/backend/lib/CodeGen/MachineFinalization.cpp index a9e08d5..6f16d97 100644 --- a/backend/lib/CodeGen/MachineFinalization.cpp +++ b/backend/lib/CodeGen/MachineFinalization.cpp @@ -92,9 +92,6 @@ const MachinePassContract &FinalizeEmissionPseudosPass::contract() const noexcep Expected<MachinePassResult> FinalizeEmissionPseudosPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &) { - if (!Function.properties().containsAll(contract().Requires)) - return makeUnexpected(ErrorCode::VerificationError, - "emission-pseudo finalization requires finalized allocated MIR"); for (MachineInstr *Instruction : Function.allInstructions()) { if (Instruction == nullptr || Instruction->parent() == nullptr) continue; @@ -125,10 +122,6 @@ const MachinePassContract &FinalEncodabilityVerifierPass::contract() const noexc Expected<MachinePassResult> FinalEncodabilityVerifierPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &) { - if (!Function.properties().containsAll(contract().Requires)) - return makeUnexpected(ErrorCode::FinalEncodabilityFailed, - "final encodability requires NoExecutablePseudos and finalized MIR"); - std::unordered_map<const MachineBasicBlock *, std::uint64_t> BlockOffsets; std::unordered_map<const MachineInstr *, std::uint64_t> InstructionOffsets; std::uint64_t Offset = 0; diff --git a/backend/lib/CodeGen/MachineLICM.cpp b/backend/lib/CodeGen/MachineLICM.cpp index 870810b..6d76d5d 100644 --- a/backend/lib/CodeGen/MachineLICM.cpp +++ b/backend/lib/CodeGen/MachineLICM.cpp @@ -321,13 +321,6 @@ const MachinePassContract &MachineLICMPass::contract() const noexcept { Expected<MachinePassResult> MachineLICMPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected( - ErrorCode::VerificationError, - Stage == MachineCodeMotionStage::SelectedSSA - ? "machine LICM requires selected SSA MachineIR" - : "post-RA machine LICM requires allocated tracked-liveness MachineIR"); - } auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachineMemoryFolding.cpp b/backend/lib/CodeGen/MachineMemoryFolding.cpp index 75200f8..388f72c 100644 --- a/backend/lib/CodeGen/MachineMemoryFolding.cpp +++ b/backend/lib/CodeGen/MachineMemoryFolding.cpp @@ -181,10 +181,6 @@ const MachinePassContract &MachineMemoryFoldingPass::contract() const noexcept { Expected<MachinePassResult> MachineMemoryFoldingPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "memory folding requires selected SSA MachineIR"); - } auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachinePeepholeOptimizer.cpp b/backend/lib/CodeGen/MachinePeepholeOptimizer.cpp index f874699..16c935d 100644 --- a/backend/lib/CodeGen/MachinePeepholeOptimizer.cpp +++ b/backend/lib/CodeGen/MachinePeepholeOptimizer.cpp @@ -41,11 +41,6 @@ const MachinePassContract &MachinePeepholeOptimizerPass::contract() const noexce Expected<MachinePassResult> MachinePeepholeOptimizerPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "machine peephole optimizer requires SSA MachineIR"); - } - auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachinePseudoExpansion.cpp b/backend/lib/CodeGen/MachinePseudoExpansion.cpp index 67a8ef8..36a4b75 100644 --- a/backend/lib/CodeGen/MachinePseudoExpansion.cpp +++ b/backend/lib/CodeGen/MachinePseudoExpansion.cpp @@ -406,10 +406,6 @@ const MachinePassContract &PreRATargetPseudoExpansionPass::contract() const noex Expected<MachinePassResult> PreRATargetPseudoExpansionPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected(ErrorCode::VerificationError, - "pre-RA pseudo expansion requires selected SSA-exited MIR"); - } return runExpansionTransaction(Function, Target, *Info, MachinePseudoExpansionPhase::PreRA, nullptr, Analyses); } @@ -421,9 +417,6 @@ const MachinePassContract &PreparePostRAPseudosPass::contract() const noexcept { Expected<MachinePassResult> PreparePostRAPseudosPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) - return makeUnexpected(ErrorCode::VerificationError, - "post-RA pseudo preparation requires selected MachineIR"); return runPreparationTransaction(Function, Target, *Info, Analyses); } @@ -445,9 +438,6 @@ const MachinePassContract &TargetLatePseudoExpansionPass::contract() const noexc Expected<MachinePassResult> TargetLatePseudoExpansionPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) - return makeUnexpected(ErrorCode::VerificationError, - "target-late pseudo expansion requires finalized allocated MIR"); return runExpansionTransaction(Function, Target, *Info, MachinePseudoExpansionPhase::TargetLate, BranchInfo, Analyses); } diff --git a/backend/lib/CodeGen/MachineSink.cpp b/backend/lib/CodeGen/MachineSink.cpp index 7840115..1c2d2b7 100644 --- a/backend/lib/CodeGen/MachineSink.cpp +++ b/backend/lib/CodeGen/MachineSink.cpp @@ -343,13 +343,6 @@ const MachinePassContract &MachineSinkPass::contract() const noexcept { Expected<MachinePassResult> MachineSinkPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - if (!Function.properties().containsAll(contract().Requires)) { - return makeUnexpected( - ErrorCode::VerificationError, - Stage == MachineCodeMotionStage::SelectedSSA - ? "machine sink requires SSA MachineIR" - : "post-RA machine sink requires allocated tracked-liveness MachineIR"); - } auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/PHIElimination.cpp b/backend/lib/CodeGen/PHIElimination.cpp index f57a950..2c536f5 100644 --- a/backend/lib/CodeGen/PHIElimination.cpp +++ b/backend/lib/CodeGen/PHIElimination.cpp @@ -64,15 +64,6 @@ struct PhiPlan final { std::vector<PhiIncoming> IncomingValues; }; -[[nodiscard]] Expected<void> requireProperties(const MachineFunction &Function, - const MachinePassContract &Contract) { - const MachineFunctionProperties Missing = Contract.Requires.missingFrom(Function.properties()); - if (Missing.empty()) - return {}; - return makeUnexpected(ErrorCode::VerificationError, - Contract.Name + " requires properties: " + Missing.toString()); -} - [[nodiscard]] bool isPhi(const MachineInstr &Instruction, const TargetDescription &Target) { const InstructionDescriptor *Descriptor = Target.instructionDescriptor(Instruction.opcode()); return Descriptor != nullptr && Descriptor->Flags.has(InstructionFlag::Phi); @@ -486,10 +477,6 @@ const MachinePassContract &PHIEliminationPass::contract() const noexcept { Expected<MachinePassResult> PHIEliminationPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - auto Required = requireProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); - auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/PrologueEpilogueInsertion.cpp b/backend/lib/CodeGen/PrologueEpilogueInsertion.cpp index 1a244ed..568ee68 100644 --- a/backend/lib/CodeGen/PrologueEpilogueInsertion.cpp +++ b/backend/lib/CodeGen/PrologueEpilogueInsertion.cpp @@ -44,12 +44,6 @@ Expected<MachinePassResult> PrologueEpilogueInsertionPass::run(MachineFunction & if (Info == nullptr) return makeUnexpected(ErrorCode::InvalidArgument, "PrologueEpilogueInsertion requires target frame lowering"); - const MachineFunctionProperties Missing = contract().Requires.missingFrom(Function.properties()); - if (!Missing.empty()) { - return makeUnexpected(ErrorCode::VerificationError, - "PrologueEpilogueInsertion requires properties: " + Missing.toString()); - } - auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/RegAllocBasic.cpp b/backend/lib/CodeGen/RegAllocBasic.cpp index 2e2222f..5cb5035 100644 --- a/backend/lib/CodeGen/RegAllocBasic.cpp +++ b/backend/lib/CodeGen/RegAllocBasic.cpp @@ -101,9 +101,6 @@ Expected<MachinePassResult> BasicAllocatorPass::run(MachineFunction &Function, MachineFunctionAnalysisManager &Analyses) { if (Info == nullptr) return makeUnexpected(ErrorCode::InvalidArgument, "BasicAllocator requires target behavior"); - auto Required = regalloc_detail::requireAllocationProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); auto Trial = regalloc_detail::cloneForAllocation(Function, Target); if (!Trial) return std::unexpected(Trial.error()); diff --git a/backend/lib/CodeGen/RegAllocFast.cpp b/backend/lib/CodeGen/RegAllocFast.cpp index 7fb1471..9448558 100644 --- a/backend/lib/CodeGen/RegAllocFast.cpp +++ b/backend/lib/CodeGen/RegAllocFast.cpp @@ -571,9 +571,6 @@ Expected<MachinePassResult> FastAllocatorPass::run(MachineFunction &Function, MachineFunctionAnalysisManager &Analyses) { if (Info == nullptr) return makeUnexpected(ErrorCode::InvalidArgument, "FastAllocator requires target behavior"); - auto Required = regalloc_detail::requireAllocationProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); auto Trial = regalloc_detail::cloneForAllocation(Function, Target); if (!Trial) return std::unexpected(Trial.error()); diff --git a/backend/lib/CodeGen/RegAllocGreedy.cpp b/backend/lib/CodeGen/RegAllocGreedy.cpp index c00e753..317c297 100644 --- a/backend/lib/CodeGen/RegAllocGreedy.cpp +++ b/backend/lib/CodeGen/RegAllocGreedy.cpp @@ -215,10 +215,6 @@ Expected<MachinePassResult> GreedyAllocatorPass::run(MachineFunction &Function, MachineFunctionAnalysisManager &Analyses) { if (Info == nullptr) return makeUnexpected(ErrorCode::InvalidArgument, "greedy allocator requires target behavior"); - auto Required = regalloc_detail::requireAllocationProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); - auto Trial = regalloc_detail::cloneForAllocation(Function, Target); if (!Trial) return std::unexpected(Trial.error()); diff --git a/backend/lib/CodeGen/RegAllocInternal.h b/backend/lib/CodeGen/RegAllocInternal.h index 52840cf..3da6387 100644 --- a/backend/lib/CodeGen/RegAllocInternal.h +++ b/backend/lib/CodeGen/RegAllocInternal.h @@ -222,16 +222,6 @@ reserveFunctionRegisters(MachineFunction &Function, std::span<const PhysicalRegi return Result; } -[[nodiscard]] inline Expected<void> -requireAllocationProperties(const MachineFunction &Function, const MachinePassContract &Contract) { - const MachineFunctionProperties Missing = Contract.Requires.missingFrom(Function.properties()); - if (!Missing.empty()) { - return makeUnexpected(ErrorCode::VerificationError, - Contract.Name + " requires properties: " + Missing.toString()); - } - return {}; -} - [[nodiscard]] inline Expected<void> verifyAllocationTrial(MachineFunction &Function, const TargetDescription &Target, const MachinePassContract &Contract) { diff --git a/backend/lib/CodeGen/RegAllocPBQP.cpp b/backend/lib/CodeGen/RegAllocPBQP.cpp index 5b187d8..792ae10 100644 --- a/backend/lib/CodeGen/RegAllocPBQP.cpp +++ b/backend/lib/CodeGen/RegAllocPBQP.cpp @@ -296,9 +296,6 @@ Expected<MachinePassResult> PBQPAllocatorPass::run(MachineFunction &Function, MachineFunctionAnalysisManager &Analyses) { if (Info == nullptr) return makeUnexpected(ErrorCode::InvalidArgument, "PBQPAllocator requires target behavior"); - auto Required = regalloc_detail::requireAllocationProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); auto Trial = regalloc_detail::cloneForAllocation(Function, Target); if (!Trial) return std::unexpected(Trial.error()); diff --git a/backend/lib/CodeGen/TwoAddressInstructionPass.cpp b/backend/lib/CodeGen/TwoAddressInstructionPass.cpp index b9e1443..b0b7e5b 100644 --- a/backend/lib/CodeGen/TwoAddressInstructionPass.cpp +++ b/backend/lib/CodeGen/TwoAddressInstructionPass.cpp @@ -32,15 +32,6 @@ struct RegisterValue final { std::uint32_t TargetFlags = 0; }; -[[nodiscard]] Expected<void> requireProperties(const MachineFunction &Function, - const MachinePassContract &Contract) { - const MachineFunctionProperties Missing = Contract.Requires.missingFrom(Function.properties()); - if (Missing.empty()) - return {}; - return makeUnexpected(ErrorCode::VerificationError, - Contract.Name + " requires properties: " + Missing.toString()); -} - [[nodiscard]] RegisterOperandFlags generatedDefFlags(RegisterOperandFlags Original) noexcept { RegisterOperandFlags Result; if (Original.has(RegisterOperandFlag::Undef)) @@ -457,10 +448,6 @@ const MachinePassContract &TwoAddressInstructionPass::contract() const noexcept Expected<MachinePassResult> TwoAddressInstructionPass::run(MachineFunction &Function, const TargetDescription &Target, MachineFunctionAnalysisManager &Analyses) { - auto Required = requireProperties(Function, contract()); - if (!Required) - return std::unexpected(Required.error()); - auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); |
