Skip to content

Commit

Permalink
Improve stack object printing. NFC.
Browse files Browse the repository at this point in the history
Reviewers: madhur13490

Reviewed By: madhur13490

Subscribers: qcolombet, arsenm, jvesely, nhaehnle, hiraditya, kerbowa, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D82712
  • Loading branch information
madhur13490 authored and madhur13490 committed Jun 28, 2020
1 parent c7bcd43 commit c73966c
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion llvm/include/llvm/CodeGen/MachineFrameInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ class MachineFrameInfo {
BitVector getPristineRegs(const MachineFunction &MF) const;

/// Used by the MachineFunction printer to print information about
/// stack objects. Implemented in MachineFunction.cpp.
/// stack objects.
void print(const MachineFunction &MF, raw_ostream &OS) const;

/// dump - Print the function to stderr.
Expand Down
14 changes: 10 additions & 4 deletions llvm/lib/CodeGen/MachineFrameInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -210,32 +210,38 @@ void MachineFrameInfo::computeMaxCallFrameSize(const MachineFunction &MF) {
}

void MachineFrameInfo::print(const MachineFunction &MF, raw_ostream &OS) const{
if (Objects.empty()) return;

OS << "MF name: " << MF.getName() << "\n";
if (Objects.empty()) {
OS << "No stack objects.\n";
return;
}
const TargetFrameLowering *FI = MF.getSubtarget().getFrameLowering();
int ValOffset = (FI ? FI->getOffsetOfLocalArea() : 0);

OS << "NumFixedObjects=" << static_cast<unsigned>(NumFixedObjects) << "\n";

OS << "Frame Objects:\n";

for (unsigned i = 0, e = Objects.size(); i != e; ++i) {
const StackObject &SO = Objects[i];
OS << " fi#" << (int)(i-NumFixedObjects) << ": ";

if (SO.StackID != 0)
OS << "id=" << static_cast<unsigned>(SO.StackID) << ' ';
OS << "stackid=" << static_cast<unsigned>(SO.StackID) << ", ";

if (SO.Size == ~0ULL) {
OS << "dead\n";
continue;
}
OS << "isSplitSplot=" << static_cast<bool>(SO.isSpillSlot) << ", ";
if (SO.Size == 0)
OS << "variable sized";
else
OS << "size=" << SO.Size;
OS << ", align=" << SO.Alignment.value();

if (i < NumFixedObjects)
OS << ", fixed";
OS << ", fixed objects:";
if (i < NumFixedObjects || SO.SPOffset != -1) {
int64_t Off = SO.SPOffset - ValOffset;
OS << ", at location [SP";
Expand Down

0 comments on commit c73966c

Please sign in to comment.