diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-15 04:48:16 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-15 04:48:16 +0800 |
| commit | 32a365a2dc0096b4421fb3947b32d971b7f34c40 (patch) | |
| tree | 54f8d77af09aaf586b672f59a815646bf5e8f7bb /backend/lib/Target/RISCV/RISCVTarget.cpp | |
| parent | bb7990a58f56f8fb9bae4d5eb01fbbe3c36fca77 (diff) | |
| download | rcc-project-32a365a2dc0096b4421fb3947b32d971b7f34c40.tar.gz rcc-project-32a365a2dc0096b4421fb3947b32d971b7f34c40.tar.xz | |
[GlobalISel] Lower stack operations
Diffstat (limited to 'backend/lib/Target/RISCV/RISCVTarget.cpp')
| -rw-r--r-- | backend/lib/Target/RISCV/RISCVTarget.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/backend/lib/Target/RISCV/RISCVTarget.cpp b/backend/lib/Target/RISCV/RISCVTarget.cpp index 1735386..0c202a2 100644 --- a/backend/lib/Target/RISCV/RISCVTarget.cpp +++ b/backend/lib/Target/RISCV/RISCVTarget.cpp @@ -245,8 +245,15 @@ Expected<TargetDescription> createTargetDescription() { .ScalarInteger = BooleanContent::ZeroOrOne, .ScalarFloatingPoint = BooleanContent::ZeroOrOne, }; + auto StackPointer = physicalRegister(PhysicalRegisterID::X2); + if (!StackPointer) + return std::unexpected(StackPointer.error()); + TargetStackInfo StackInfo{ + .StackPointerRegisterToSaveRestore = *StackPointer, + .GrowthDirection = StackGrowthDirection::Down, + }; return TargetDescription::create(std::move(*Instructions), std::move(*Registers), - std::move(MIRText), BooleanInfo); + std::move(MIRText), BooleanInfo, StackInfo); } std::shared_ptr<const RegisterMask> createCallPreservedMask(CallingConvention Convention) { |
