summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PrologEpilogInserter.cpp
diff options
context:
space:
mode:
authorSander de Smalen <sander.desmalen@arm.com>2019-06-17 09:13:29 +0000
committerSander de Smalen <sander.desmalen@arm.com>2019-06-17 09:13:29 +0000
commit5d6ee76c16341cf0d7cb577d2316c71b31da7eb9 (patch)
tree3e699566d7bc274f972d1ed73efd2d6899ba8328 /llvm/lib/CodeGen/PrologEpilogInserter.cpp
parenta059efa885f03e69895e3f6d15d48d57645e0340 (diff)
downloadbcm5719-llvm-5d6ee76c16341cf0d7cb577d2316c71b31da7eb9.tar.gz
bcm5719-llvm-5d6ee76c16341cf0d7cb577d2316c71b31da7eb9.zip
Describe stack-id as an enum
This patch changes MIR stack-id from an integer to an enum, and adds printing/parsing support for this in MIR files. The default stack-id '0' is now renamed to 'default'. This should make MIR tests that have stack objects with different stack-ids more descriptive. It also clarifies code operating on StackID. Reviewers: arsenm, thegameg, qcolombet Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D60137 llvm-svn: 363533
Diffstat (limited to 'llvm/lib/CodeGen/PrologEpilogInserter.cpp')
-rw-r--r--llvm/lib/CodeGen/PrologEpilogInserter.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
index ab6814be694..94955678c25 100644
--- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp
+++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
@@ -662,11 +662,11 @@ computeFreeStackSlots(MachineFrameInfo &MFI, bool StackGrowsDown,
// Add fixed objects.
for (int i = MFI.getObjectIndexBegin(); i != 0; ++i)
// StackSlot scavenging is only implemented for the default stack.
- if (MFI.getStackID(i) == 0)
+ if (MFI.getStackID(i) == TargetStackID::Default)
AllocatedFrameSlots.push_back(i);
// Add callee-save objects.
for (int i = MinCSFrameIndex; i <= (int)MaxCSFrameIndex; ++i)
- if (MFI.getStackID(i) == 0)
+ if (MFI.getStackID(i) == TargetStackID::Default)
AllocatedFrameSlots.push_back(i);
for (int i : AllocatedFrameSlots) {
@@ -791,7 +791,8 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &MF) {
#ifdef EXPENSIVE_CHECKS
for (unsigned i = 0, e = MFI.getObjectIndexEnd(); i != e; ++i)
- if (!MFI.isDeadObjectIndex(i) && MFI.getStackID(i) == 0)
+ if (!MFI.isDeadObjectIndex(i) &&
+ MFI.getStackID(i) == TargetStackID::Default)
assert(MFI.getObjectAlignment(i) <= MFI.getMaxAlignment() &&
"MaxAlignment is invalid");
#endif
@@ -801,7 +802,8 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &MF) {
// Adjust 'Offset' to point to the end of last fixed sized preallocated
// object.
for (int i = MFI.getObjectIndexBegin(); i != 0; ++i) {
- if (MFI.getStackID(i)) // Only allocate objects on the default stack.
+ if (MFI.getStackID(i) !=
+ TargetStackID::Default) // Only allocate objects on the default stack.
continue;
int64_t FixedOff;
@@ -822,7 +824,8 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &MF) {
// callee saved registers.
if (StackGrowsDown) {
for (unsigned i = MinCSFrameIndex; i <= MaxCSFrameIndex; ++i) {
- if (MFI.getStackID(i)) // Only allocate objects on the default stack.
+ if (MFI.getStackID(i) !=
+ TargetStackID::Default) // Only allocate objects on the default stack.
continue;
// If the stack grows down, we need to add the size to find the lowest
@@ -839,7 +842,8 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &MF) {
} else if (MaxCSFrameIndex >= MinCSFrameIndex) {
// Be careful about underflow in comparisons agains MinCSFrameIndex.
for (unsigned i = MaxCSFrameIndex; i != MinCSFrameIndex - 1; --i) {
- if (MFI.getStackID(i)) // Only allocate objects on the default stack.
+ if (MFI.getStackID(i) !=
+ TargetStackID::Default) // Only allocate objects on the default stack.
continue;
if (MFI.isDeadObjectIndex(i))
@@ -932,7 +936,8 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &MF) {
if (MFI.getStackProtectorIndex() == (int)i ||
EHRegNodeFrameIndex == (int)i)
continue;
- if (MFI.getStackID(i)) // Only allocate objects on the default stack.
+ if (MFI.getStackID(i) !=
+ TargetStackID::Default) // Only allocate objects on the default stack.
continue;
switch (MFI.getObjectSSPLayout(i)) {
@@ -977,7 +982,8 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &MF) {
continue;
if (ProtectedObjs.count(i))
continue;
- if (MFI.getStackID(i)) // Only allocate objects on the default stack.
+ if (MFI.getStackID(i) !=
+ TargetStackID::Default) // Only allocate objects on the default stack.
continue;
// Add the objects that we need to allocate to our working set.
OpenPOWER on IntegriCloud