diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-09 17:03:19 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-09 17:03:19 +0800 |
| commit | 495c675771f43cfa12ab7a426a538be72fec1805 (patch) | |
| tree | 4107223d6c6ef2e74d56064aa21b196307502342 /backend/lib/Target/Description | |
| parent | da8bc76b4bf7d1a7b025d6c8ef5809551467dcc7 (diff) | |
| download | rcc-project-495c675771f43cfa12ab7a426a538be72fec1805.tar.gz rcc-project-495c675771f43cfa12ab7a426a538be72fec1805.tar.xz | |
[CodeGen] Implement machine optimization and scheduling
Diffstat (limited to 'backend/lib/Target/Description')
| -rw-r--r-- | backend/lib/Target/Description/TargetDescriptionGenerator.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/backend/lib/Target/Description/TargetDescriptionGenerator.cpp b/backend/lib/Target/Description/TargetDescriptionGenerator.cpp index 9d6b8e1..cd5ba97 100644 --- a/backend/lib/Target/Description/TargetDescriptionGenerator.cpp +++ b/backend/lib/Target/Description/TargetDescriptionGenerator.cpp @@ -1683,7 +1683,7 @@ instructionFlagEnumerator(std::string_view Value) noexcept { [[nodiscard]] std::optional<std::string_view> pseudoOwnerEnumerator(std::string_view Value) noexcept { - static constexpr std::array<std::pair<std::string_view, std::string_view>, 11> Owners = {{ + static constexpr std::array<std::pair<std::string_view, std::string_view>, 12> Owners = {{ {"none", "None"}, {"legalizer", "Legalizer"}, {"register_bank_select", "RegisterBankSelect"}, @@ -1695,6 +1695,7 @@ pseudoOwnerEnumerator(std::string_view Value) noexcept { {"prologue_epilogue_insertion", "PrologueEpilogueInsertion"}, {"post_ra_expansion", "PostRAExpansion"}, {"finalization", "Finalization"}, + {"target_late_expansion", "TargetLateExpansion"}, }}; if (Value == "asm_printer") return "AsmPrinter"; @@ -2328,8 +2329,8 @@ private: } if (InputOperand.ImmediatePredicateSymbol) { const auto Position = ImmediatePredicateBySymbol.find(*InputOperand.ImmediatePredicateSymbol); - if (Position == ImmediatePredicateBySymbol.end() || Result.Kinds.size() != 1 || - Result.Kinds.front() != "Immediate") { + if (Position == ImmediatePredicateBySymbol.end() || + std::ranges::find(Result.Kinds, "Immediate") == Result.Kinds.end()) { fail(InputOperand.Range, "instruction immediate predicates must name a declaration and constrain an immediate"); return false; |
