diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-13 06:52:15 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-13 06:52:15 +0800 |
| commit | aa7c85ca71859aab15bdf1e6dc1ea3a5aa5d1e28 (patch) | |
| tree | 20d94c4debfe4900e362c6c7f8443bcfbd58ec28 /backend/lib/Target/RISCV/RISCVMCTargetLowering.cpp | |
| parent | d62f022c92fcc3ebe2269273628943a0089683fd (diff) | |
| download | rcc-project-aa7c85ca71859aab15bdf1e6dc1ea3a5aa5d1e28.tar.gz rcc-project-aa7c85ca71859aab15bdf1e6dc1ea3a5aa5d1e28.tar.xz | |
[Support] Split APInt and APFloat ownership
Diffstat (limited to 'backend/lib/Target/RISCV/RISCVMCTargetLowering.cpp')
| -rw-r--r-- | backend/lib/Target/RISCV/RISCVMCTargetLowering.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/backend/lib/Target/RISCV/RISCVMCTargetLowering.cpp b/backend/lib/Target/RISCV/RISCVMCTargetLowering.cpp index ee41d47..0db51f0 100644 --- a/backend/lib/Target/RISCV/RISCVMCTargetLowering.cpp +++ b/backend/lib/Target/RISCV/RISCVMCTargetLowering.cpp @@ -252,7 +252,7 @@ struct TypeLayout final { return mc::MCOperand::expression(std::move(*TargetExpression)); } -[[nodiscard]] Expected<std::int64_t> lowerIntegerImmediate(const IntegerImmediate &Value) { +[[nodiscard]] Expected<std::int64_t> lowerIntegerImmediate(const APInt &Value) { if (Value.bitWidth() > 64 || Value.words().size() != 1) { return makeUnexpected(ErrorCode::AssemblyLoweringFailed, "RISC-V instruction has an integer immediate wider than 64 bits"); @@ -714,14 +714,14 @@ struct TypeLayout final { } switch (Initializer.kind()) { case GlobalInitializer::Kind::Integer: { - const auto *Value = Initializer.getIf<IntegerImmediate>(); + const auto *Value = Initializer.getIf<APInt>(); if (Value == nullptr) return makeUnexpected(ErrorCode::InternalError, "integer initializer has no value"); const std::uint64_t Size = (static_cast<std::uint64_t>(Value->bitWidth()) + 7U) / 8U; return Streamer.emitBytes(bytesFromWords(Value->words(), Size)); } case GlobalInitializer::Kind::Floating: { - const auto *Value = Initializer.getIf<FloatingPointBits>(); + const auto *Value = Initializer.getIf<APFloat>(); if (Value == nullptr) return makeUnexpected(ErrorCode::InternalError, "floating initializer has no value"); const std::uint64_t Size = (static_cast<std::uint64_t>(Value->bitWidth()) + 7U) / 8U; @@ -839,12 +839,12 @@ struct TypeLayout final { return false; switch (Initializer.kind()) { case GlobalInitializer::Kind::Integer: { - const auto *Value = Initializer.getIf<IntegerImmediate>(); + const auto *Value = Initializer.getIf<APInt>(); return Value != nullptr && std::ranges::all_of(Value->words(), [](std::uint64_t Word) { return Word == 0; }); } case GlobalInitializer::Kind::Floating: { - const auto *Value = Initializer.getIf<FloatingPointBits>(); + const auto *Value = Initializer.getIf<APFloat>(); return Value != nullptr && std::ranges::all_of(Value->words(), [](std::uint64_t Word) { return Word == 0; }); } |
