aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/Tooling/BackendDriver.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-12 19:45:09 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-12 19:45:09 +0800
commit09e8ef3e0dae29be7aa21a6e22a118a3f545945f (patch)
treecfc5a7148aca9e768df16743c2c637e8c00a9d44 /backend/lib/Tooling/BackendDriver.cpp
parent1775d50ba02dab033c639f5c8fedd46cb6613bef (diff)
downloadrcc-project-09e8ef3e0dae29be7aa21a6e22a118a3f545945f.tar.gz
rcc-project-09e8ef3e0dae29be7aa21a6e22a118a3f545945f.tar.xz
[Tooling] Complete the LLVM MIR command-line contract
Diffstat (limited to 'backend/lib/Tooling/BackendDriver.cpp')
-rw-r--r--backend/lib/Tooling/BackendDriver.cpp44
1 files changed, 21 insertions, 23 deletions
diff --git a/backend/lib/Tooling/BackendDriver.cpp b/backend/lib/Tooling/BackendDriver.cpp
index fff58c5..c726fd3 100644
--- a/backend/lib/Tooling/BackendDriver.cpp
+++ b/backend/lib/Tooling/BackendDriver.cpp
@@ -164,30 +164,28 @@ std::string_view spelling(BackendOutputKind Output) noexcept {
return "invalid";
}
-Expected<BackendOutputKind> parseBackendOutputKind(std::string_view Value) {
- if (Value == "prelegalizer-mir")
- return BackendOutputKind::PreLegalizerMIR;
- if (Value == "legalized-mir")
- return BackendOutputKind::LegalizedMIR;
- if (Value == "regbank-mir")
- return BackendOutputKind::RegisterBankMIR;
- if (Value == "selected-mir")
- return BackendOutputKind::SelectedMIR;
- if (Value == "post-ssa-mir")
- return BackendOutputKind::PostSSAMIR;
- if (Value == "post-ra-mir")
- return BackendOutputKind::PostRegisterAllocationMIR;
- if (Value == "final-mir")
- return BackendOutputKind::FinalMIR;
- if (Value == "assembly" || Value == "asm")
- return BackendOutputKind::Assembly;
- if (Value == "object" || Value == "obj")
- return BackendOutputKind::RelocatableObject;
- return makeUnexpected(ErrorCode::InvalidInvocation, "unknown backend output kind");
-}
-
ArtifactKind manifestArtifactKind(BackendOutputKind Output) noexcept {
- return static_cast<ArtifactKind>(static_cast<std::uint8_t>(Output));
+ switch (Output) {
+ case BackendOutputKind::PreLegalizerMIR:
+ return ArtifactKind::PreLegalizerMIR;
+ case BackendOutputKind::LegalizedMIR:
+ return ArtifactKind::LegalizedMIR;
+ case BackendOutputKind::RegisterBankMIR:
+ return ArtifactKind::RegisterBankMIR;
+ case BackendOutputKind::SelectedMIR:
+ return ArtifactKind::SelectedMIR;
+ case BackendOutputKind::PostSSAMIR:
+ return ArtifactKind::PostSSAMIR;
+ case BackendOutputKind::PostRegisterAllocationMIR:
+ return ArtifactKind::PostRegisterAllocationMIR;
+ case BackendOutputKind::FinalMIR:
+ return ArtifactKind::FinalMIR;
+ case BackendOutputKind::Assembly:
+ return ArtifactKind::Assembly;
+ case BackendOutputKind::RelocatableObject:
+ return ArtifactKind::RelocatableObject;
+ }
+ return ArtifactKind::FinalMIR;
}
Expected<ArtifactKind> cacheArtifactKind(BackendOutputKind Output) {