aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/Target/RISCV/RISCVTarget.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-15 04:48:16 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-15 04:48:16 +0800
commit32a365a2dc0096b4421fb3947b32d971b7f34c40 (patch)
tree54f8d77af09aaf586b672f59a815646bf5e8f7bb /backend/lib/Target/RISCV/RISCVTarget.cpp
parentbb7990a58f56f8fb9bae4d5eb01fbbe3c36fca77 (diff)
downloadrcc-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.cpp9
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) {