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 @@ -821,7 +821,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 @@ -210,11 +210,16 @@ } 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(NumFixedObjects) << "\n"; + OS << "Frame Objects:\n"; for (unsigned i = 0, e = Objects.size(); i != e; ++i) { @@ -222,7 +227,7 @@ OS << " fi#" << (int)(i-NumFixedObjects) << ": "; if (SO.StackID != 0) - OS << "id=" << static_cast(SO.StackID) << ' '; + OS << "stackid=" << static_cast(SO.StackID) << ", "; if (SO.Size == ~0ULL) { OS << "dead\n"; @@ -235,7 +240,7 @@ 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"; @@ -245,6 +250,7 @@ OS << Off; OS << "]"; } + OS << "isSplitSplot=" << static_cast(SO.isSpillSlot) << ", "; OS << "\n"; } } diff --git a/llvm/test/CodeGen/AArch64/max-jump-table.ll b/llvm/test/CodeGen/AArch64/max-jump-table.ll --- a/llvm/test/CodeGen/AArch64/max-jump-table.ll +++ b/llvm/test/CodeGen/AArch64/max-jump-table.ll @@ -28,6 +28,8 @@ i32 17, label %bb17 ] ; CHECK-LABEL: function jt1: +; CHECK-NEXT: MF name: jt1 +; CHECK-NEXT: No stack objects. ; CHECK-NEXT: Jump Tables: ; CHECK0-NEXT: %jump-table.0: %bb.1 %bb.2 %bb.3 %bb.4 %bb.5 %bb.6 %bb.7 %bb.8 %bb.9 %bb.10 %bb.11 %bb.12 %bb.13 %bb.14 %bb.15 %bb.16 %bb.17 ; CHECK0-NOT: %jump-table.1: @@ -77,6 +79,8 @@ i32 15, label %bb6 ] ; CHECK-LABEL: function jt2: +; CHECK-NEXT: MF name: jt2 +; CHECK-NEXT: No stack objects. ; CHECK-NEXT: Jump Tables: ; CHECK0-NEXT: %jump-table.0: %bb.1 %bb.2 %bb.3 %bb.4 %bb.7 %bb.7 %bb.7 %bb.7 %bb.7 %bb.7 %bb.7 %bb.7 %bb.7 %bb.5 %bb.6{{$}} ; CHECK0-NOT: %jump-table.1: @@ -119,6 +123,8 @@ i32 23, label %bb12 ] ; CHECK-LABEL: function jt3: +; CHECK-NEXT: MF name: jt3 +; CHECK-NEXT: No stack objects. ; CHECK-NEXT: Jump Tables: ; CHECK0-NEXT: %jump-table.0: %bb.1 %bb.2 %bb.3 %bb.4 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.5 %bb.6 %bb.7 %bb.8 %bb.13 %bb.9 %bb.10 %bb.13 %bb.11 %bb.12 ; CHECK0-NOT: %jump-table.1: @@ -171,6 +177,8 @@ i32 23, label %bb12 ] ; CHECK-LABEL: function jt4: +; CHECK-NEXT: MF name: jt4 +; CHECK-NEXT: No stack objects. ; CHECK-NEXT: Jump Tables: ; CHECK0-NEXT: %jump-table.0: %bb.1 %bb.2 %bb.3 %bb.4 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.13 %bb.5 %bb.6 %bb.7 %bb.8 %bb.13 %bb.9 %bb.10 %bb.13 %bb.11 %bb.12 ; CHECK0-NOT: %jump-table.1: @@ -226,6 +234,8 @@ i32 17, label %bb17 ] ; CHECK-LABEL: function jt1_optsize: +; CHECK-NEXT: MF name: jt1_optsize +; CHECK-NEXT: No stack objects. ; CHECK-NEXT: Jump Tables: ; CHECK0-NEXT: %jump-table.0: %bb.1 %bb.2 %bb.3 %bb.4 %bb.5 %bb.6 %bb.7 %bb.8 %bb.9 %bb.10 %bb.11 %bb.12 %bb.13 %bb.14 %bb.15 %bb.16 %bb.17 ; CHECK0-NOT: %jump-table.1: @@ -284,6 +294,8 @@ i32 17, label %bb17 ] ; CHECK-LABEL: function jt1_pgso: +; CHECK-NEXT: MF name: jt1_pgso +; CHECK-NEXT: No stack objects. ; CHECK-NEXT: Jump Tables: ; CHECK0-NEXT: %jump-table.0: %bb.1 %bb.2 %bb.3 %bb.4 %bb.5 %bb.6 %bb.7 %bb.8 %bb.9 %bb.10 %bb.11 %bb.12 %bb.13 %bb.14 %bb.15 %bb.16 %bb.17 ; CHECK0-NOT: %jump-table.1: diff --git a/llvm/test/CodeGen/AArch64/min-jump-table.ll b/llvm/test/CodeGen/AArch64/min-jump-table.ll --- a/llvm/test/CodeGen/AArch64/min-jump-table.ll +++ b/llvm/test/CodeGen/AArch64/min-jump-table.ll @@ -12,6 +12,8 @@ i32 3, label %bb2 ] ; CHECK-LABEL: function jt2: +; CHECK-LABEL: MF name: jt2 +; CHECK-LABEL: No stack objects. ; CHECK0-NEXT: Jump Tables: ; CHECK2-NEXT: Jump Tables: ; CHECK4-NOT: {{^}}Jump Tables: @@ -32,6 +34,8 @@ i32 5, label %bb4 ] ; CHECK-LABEL: function jt4: +; CHECK-LABEL: MF name: jt4 +; CHECK-LABEL: No stack objects. ; CHECK0-NEXT: Jump Tables: ; CHECK2-NEXT: Jump Tables: ; CHECK4-NEXT: Jump Tables: @@ -58,6 +62,8 @@ i32 9, label %bb8 ] ; CHECK-LABEL: function jt8: +; CHECK-LABEL: MF name: jt8 +; CHECK-LABEL: No stack objects. ; CHECK-NEXT: Jump Tables: bb1: tail call void @ext(i32 1, i32 0) br label %return 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,13 @@ ; 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: MF name: caller2 +; COMMON: NumFixedObjects=4 +; COMMON: Frame Objects: +; COMMON: fi#-4: {{.*}} fixed objects:, at location [SP+8] +; COMMON: fi#-3: {{.*}} fixed objects:, at location [SP] +; COMMON: fi#-2: {{.*}} fixed objects:, at location [SP+8] +; COMMON: fi#-1: {{.*}} fixed objects:, at location [SP] ; The order that these appear in differes in GISel than SDAG, but the ; dependency relationship still holds.