aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/Target/RISCV/RISCVPipeline.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-24 19:01:47 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-24 19:01:47 +0800
commitb8fb9248e77e492c630ca135d1bfd58b74f9752a (patch)
tree252506ded999c066e102bf94a83c4c9ae31ba27f /backend/lib/Target/RISCV/RISCVPipeline.cpp
parentb9ef2aac9a9e868fea961078d62e46aab91e462d (diff)
downloadrcc-project-b8fb9248e77e492c630ca135d1bfd58b74f9752a.tar.gz
rcc-project-b8fb9248e77e492c630ca135d1bfd58b74f9752a.tar.xz
[CodeGen] Implement CFI instruction insertion
Diffstat (limited to 'backend/lib/Target/RISCV/RISCVPipeline.cpp')
-rw-r--r--backend/lib/Target/RISCV/RISCVPipeline.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/backend/lib/Target/RISCV/RISCVPipeline.cpp b/backend/lib/Target/RISCV/RISCVPipeline.cpp
index 8ba86ce..e094591 100644
--- a/backend/lib/Target/RISCV/RISCVPipeline.cpp
+++ b/backend/lib/Target/RISCV/RISCVPipeline.cpp
@@ -6,6 +6,7 @@
#include "GISel/RISCVRegisterBankInfo.h"
#include "RISCV.h"
#include "RISCVInstrInfo.h"
+#include "rcc/CodeGen/CFIInstrInserter.h"
#include "rcc/CodeGen/GlobalISel/Combiner.h"
#include "rcc/CodeGen/GlobalISel/InstructionSelect.h"
#include "rcc/CodeGen/GlobalISel/Legalizer.h"
@@ -97,12 +98,15 @@ template <typename PassT, typename... ArgumentT>
Added = addRegisterAllocationPipeline(Pipeline, Subtarget, Options);
if (!Added)
return std::unexpected(Added.error());
- return addPostRegisterAllocationPipeline(
+ Added = addPostRegisterAllocationPipeline(
Pipeline,
optimizationPipelineInfo(Subtarget, Options.DebugMachineScheduler,
Options.DebugPrologueEpilogue),
MachineOptimizationPipelineOptions{.UseTargetCopyInstructions =
Options.UseTargetCopyInstructions});
+ if (!Added)
+ return std::unexpected(Added.error());
+ return addPass<CFIInstrInserterPass>(Pipeline, Subtarget.frameLowering());
}
} // namespace