aboutsummaryrefslogtreecommitdiff
path: root/backend/include/rcc/CodeGen
diff options
context:
space:
mode:
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 {