aboutsummaryrefslogtreecommitdiff
path: root/backend/include/rcc/Tooling/BackendInvocation.h
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/include/rcc/Tooling/BackendInvocation.h
parent1775d50ba02dab033c639f5c8fedd46cb6613bef (diff)
downloadrcc-project-09e8ef3e0dae29be7aa21a6e22a118a3f545945f.tar.gz
rcc-project-09e8ef3e0dae29be7aa21a6e22a118a3f545945f.tar.xz
[Tooling] Complete the LLVM MIR command-line contract
Diffstat (limited to 'backend/include/rcc/Tooling/BackendInvocation.h')
-rw-r--r--backend/include/rcc/Tooling/BackendInvocation.h33
1 files changed, 4 insertions, 29 deletions
diff --git a/backend/include/rcc/Tooling/BackendInvocation.h b/backend/include/rcc/Tooling/BackendInvocation.h
index db1c5d2..d61f038 100644
--- a/backend/include/rcc/Tooling/BackendInvocation.h
+++ b/backend/include/rcc/Tooling/BackendInvocation.h
@@ -3,6 +3,7 @@
#ifndef RCC_TOOLING_BACKENDINVOCATION_H
#define RCC_TOOLING_BACKENDINVOCATION_H
+#include "rcc/CodeGen/CommandFlags.h"
#include "rcc/Support/Error.h"
#include <cstdint>
@@ -25,26 +26,6 @@ inline constexpr std::string_view GenericOpcodeReferenceVersion = "rcc-generic-o
inline constexpr std::string_view RV64GCTargetABILoweringVersion = "rcc-rv64gc-lp64d-v1";
inline constexpr std::string_view CompilerBuildFingerprint = "rcc-backend-0.1.0-stage17";
-enum class RelocationModel : std::uint8_t {
- Static,
- PositionIndependent,
-};
-
-enum class CodeModel : std::uint8_t {
- Small,
- Medium,
- Large,
-};
-
-enum class OptimizationLevel : std::uint8_t {
- O0,
- O1,
- O2,
- O3,
- Os,
- Oz,
-};
-
enum class LayoutOwnership : std::uint8_t {
NativeObject,
CompilerFinalLayout,
@@ -74,14 +55,14 @@ struct BackendInvocation final {
std::vector<std::string> Features;
std::string ABI;
std::string DataLayout;
- RelocationModel Relocation = RelocationModel::PositionIndependent;
- CodeModel Code = CodeModel::Small;
+ rcc::RelocationModel Relocation = rcc::RelocationModel::PositionIndependent;
+ rcc::CodeModel Code = rcc::CodeModel::Small;
std::vector<BackendOption> TargetOptions;
LayoutOwnership Layout = LayoutOwnership::NativeObject;
std::string AssemblerFlavor;
std::string AssemblerVersion;
std::vector<BackendOption> AssemblerOptions;
- OptimizationLevel Optimization = OptimizationLevel::O2;
+ rcc::OptimizationLevel Optimization = rcc::OptimizationLevel::O2;
std::vector<std::string> PassPipeline{"default"};
DeterminismOptions Determinism;
std::optional<std::uint64_t> ActionFuel;
@@ -104,13 +85,7 @@ computeTargetDescriptionFingerprint(const TargetDescription &Target);
const BackendInvocation &Invocation,
std::string_view TargetFingerprint);
-[[nodiscard]] std::string_view spelling(RelocationModel Value) noexcept;
-[[nodiscard]] std::string_view spelling(CodeModel Value) noexcept;
-[[nodiscard]] std::string_view spelling(OptimizationLevel Value) noexcept;
[[nodiscard]] std::string_view spelling(LayoutOwnership Value) noexcept;
-[[nodiscard]] Expected<RelocationModel> parseRelocationModel(std::string_view Value);
-[[nodiscard]] Expected<CodeModel> parseCodeModel(std::string_view Value);
-[[nodiscard]] Expected<OptimizationLevel> parseOptimizationLevel(std::string_view Value);
[[nodiscard]] Expected<LayoutOwnership> parseLayoutOwnership(std::string_view Value);
} // namespace tooling