aboutsummaryrefslogtreecommitdiff
path: root/backend/include/rcc/CodeGen
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-11 19:36:06 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-11 19:36:06 +0800
commitb7716aba458fb3d49742f7a3c169deee7345396e (patch)
tree85a8f99a8bd06e9dfbe6e7973c3440f2db7110af /backend/include/rcc/CodeGen
parente7bf0d93d40ad86902d9a8636d24420b5abd2937 (diff)
downloadrcc-project-b7716aba458fb3d49742f7a3c169deee7345396e.tar.gz
rcc-project-b7716aba458fb3d49742f7a3c169deee7345396e.tar.xz
[RISCV] Honor invocation subtarget features
Diffstat (limited to 'backend/include/rcc/CodeGen')
-rw-r--r--backend/include/rcc/CodeGen/MachinePipelinePasses.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/backend/include/rcc/CodeGen/MachinePipelinePasses.h b/backend/include/rcc/CodeGen/MachinePipelinePasses.h
index 08f0dac..1187e4a 100644
--- a/backend/include/rcc/CodeGen/MachinePipelinePasses.h
+++ b/backend/include/rcc/CodeGen/MachinePipelinePasses.h
@@ -6,12 +6,16 @@
#include "rcc/CodeGen/MachinePass.h"
#include "rcc/CodeGen/TargetCodeGen.h"
+#include <memory>
+
namespace rcc {
class LegalizerPass final : public MachineFunctionPass {
public:
explicit LegalizerPass(const TargetLegalizerInfo *Info) : Info(Info) {}
explicit LegalizerPass(const TargetLegalizerInfo &Info) : Info(&Info) {}
+ explicit LegalizerPass(std::unique_ptr<TargetLegalizerInfo> Info)
+ : OwnedInfo(std::move(Info)), Info(OwnedInfo.get()) {}
[[nodiscard]] const MachinePassContract &contract() const noexcept override;
[[nodiscard]] Expected<MachinePassResult> run(MachineFunction &Function,
@@ -23,7 +27,8 @@ private:
const TargetDescription &Target,
MachineActionReplay &Actions);
- const TargetLegalizerInfo *Info;
+ std::unique_ptr<TargetLegalizerInfo> OwnedInfo;
+ const TargetLegalizerInfo *Info = nullptr;
};
class RegisterBankSelectPass final : public MachineFunctionPass {