diff --git a/llvm/include/llvm/CodeGen/MachineFrameInfo.h b/llvm/include/llvm/CodeGen/MachineFrameInfo.h --- a/llvm/include/llvm/CodeGen/MachineFrameInfo.h +++ b/llvm/include/llvm/CodeGen/MachineFrameInfo.h @@ -822,7 +822,7 @@ 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. diff --git a/llvm/lib/CodeGen/MachineFrameInfo.cpp b/llvm/lib/CodeGen/MachineFrameInfo.cpp --- a/llvm/lib/CodeGen/MachineFrameInfo.cpp +++ b/llvm/lib/CodeGen/MachineFrameInfo.cpp @@ -215,6 +215,8 @@ const TargetFrameLowering *FI = MF.getSubtarget().getFrameLowering(); int ValOffset = (FI ? FI->getOffsetOfLocalArea() : 0); + OS << "Fixed Objects: " << static_cast(NumFixedObjects) << "\n"; + OS << "Frame Objects:\n"; for (unsigned i = 0, e = Objects.size(); i != e; ++i) { @@ -222,7 +224,7 @@ OS << " fi#" << (int)(i-NumFixedObjects) << ": "; if (SO.StackID != 0) - OS << "id=" << static_cast(SO.StackID) << ' '; + OS << "stack id: " << static_cast(SO.StackID) << ", "; if (SO.Size == ~0ULL) { OS << "dead\n"; @@ -235,7 +237,7 @@ OS << ", align=" << SO.Alignment.value(); if (i < NumFixedObjects) - OS << ", fixed"; + OS << ", fixed:"; if (i < NumFixedObjects || SO.SPOffset != -1) { int64_t Off = SO.SPOffset - ValOffset; OS << ", at location [SP"; @@ -243,9 +245,10 @@ OS << "+" << Off; else if (Off < 0) OS << Off; - OS << "]"; + OS << "], "; } - OS << "\n"; + OS << "Split Slot: " + << (static_cast(SO.isSpillSlot) == true ? "Yes" : "No") << "\n"; } } diff --git a/llvm/test/CodeGen/AArch64/tailcall_misched_graph.ll b/llvm/test/CodeGen/AArch64/tailcall_misched_graph.ll --- a/llvm/test/CodeGen/AArch64/tailcall_misched_graph.ll +++ b/llvm/test/CodeGen/AArch64/tailcall_misched_graph.ll @@ -21,11 +21,12 @@ ; PR23459 has a test case that we where miscompiling because of this at the ; time. -; COMMON: Frame Objects -; COMMON: fi#-4: {{.*}} fixed, at location [SP+8] -; COMMON: fi#-3: {{.*}} fixed, at location [SP] -; COMMON: fi#-2: {{.*}} fixed, at location [SP+8] -; COMMON: fi#-1: {{.*}} fixed, at location [SP] +; COMMON: Fixed Objects: 4 +; COMMON: Frame Objects: +; COMMON: fi#-4: {{.*}} fixed:, at location [SP+8], Split Slot: No +; COMMON: fi#-3: {{.*}} fixed:, at location [SP], Split Slot: No +; COMMON: fi#-2: {{.*}} fixed:, at location [SP+8], Split Slot: No +; COMMON: fi#-1: {{.*}} fixed:, at location [SP], Split Slot: No ; The order that these appear in differes in GISel than SDAG, but the ; dependency relationship still holds.