aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/Target/RISCV/RISCVTarget.cpp
diff options
context:
space:
mode:
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) {