diff options
Diffstat (limited to 'backend/lib/Target')
| -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) { |
