diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-12 00:26:10 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-12 00:26:10 +0800 |
| commit | d91d57297bdb30b6363e259ab75d517dc333e292 (patch) | |
| tree | b931c72127e25a4acbf1f7b38ffdcba74ef270c7 /backend/lib/Target/RISCV/RISCVMCCodeEmitter.cpp | |
| parent | adf3e4f02e330e052dbb75e9601bae5273ccfe6c (diff) | |
| download | rcc-project-d91d57297bdb30b6363e259ab75d517dc333e292.tar.gz rcc-project-d91d57297bdb30b6363e259ab75d517dc333e292.tar.xz | |
[RISCV] Support absolute address operand flags
Diffstat (limited to 'backend/lib/Target/RISCV/RISCVMCCodeEmitter.cpp')
| -rw-r--r-- | backend/lib/Target/RISCV/RISCVMCCodeEmitter.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/backend/lib/Target/RISCV/RISCVMCCodeEmitter.cpp b/backend/lib/Target/RISCV/RISCVMCCodeEmitter.cpp index 5f98887..81ac0f1 100644 --- a/backend/lib/Target/RISCV/RISCVMCCodeEmitter.cpp +++ b/backend/lib/Target/RISCV/RISCVMCCodeEmitter.cpp @@ -182,6 +182,8 @@ namespace { return std::unexpected(Kind.error()); if (*Kind == 0) return fixupKind(RISCVFixupKind::High20); + if (*Kind == static_cast<std::uint32_t>(RISCVMCExprKind::AbsoluteHigh)) + return fixupKind(RISCVFixupKind::High20); if (*Kind == static_cast<std::uint32_t>(RISCVMCExprKind::PCRelativeHigh)) return fixupKind(RISCVFixupKind::PCRelativeHigh20); if (*Kind == static_cast<std::uint32_t>(RISCVMCExprKind::CallPLT)) @@ -196,6 +198,8 @@ namespace { return std::unexpected(Kind.error()); if (*Kind == 0) return fixupKind(Store ? RISCVFixupKind::Low12S : RISCVFixupKind::Low12I); + if (*Kind == static_cast<std::uint32_t>(RISCVMCExprKind::AbsoluteLow)) + return fixupKind(Store ? RISCVFixupKind::Low12S : RISCVFixupKind::Low12I); if (*Kind == static_cast<std::uint32_t>(RISCVMCExprKind::PCRelativeLow)) { return fixupKind(Store ? RISCVFixupKind::PCRelativeLow12S : RISCVFixupKind::PCRelativeLow12I); } |
