diff options
author | Chris Lattner <sabre@nondot.org> | 2003-01-16 18:35:57 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-01-16 18:35:57 +0000 |
commit | 9085d8a9a9000eeaa7cf337ccbdca41d528c99c2 (patch) | |
tree | 223a046e081acb501224e329935d4da40b8c761a | |
parent | 55f6fab9f11dba97e0ee2c4e836c898e713d102a (diff) |
Print machine frame objects with the frame offset intrinsic to the machine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5329 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/MachineFrameInfo.h | 7 | ||||
-rw-r--r-- | lib/CodeGen/MachineFunction.cpp | 19 |
2 files changed, 16 insertions, 10 deletions
diff --git a/include/llvm/CodeGen/MachineFrameInfo.h b/include/llvm/CodeGen/MachineFrameInfo.h index 45a24cc70b..6f907e1ff3 100644 --- a/include/llvm/CodeGen/MachineFrameInfo.h +++ b/include/llvm/CodeGen/MachineFrameInfo.h @@ -33,6 +33,7 @@ class TargetData; class TargetRegisterClass; +class MachineFunction; #include <vector> class MachineFrameInfo { @@ -205,10 +206,10 @@ public: /// print - Used by the MachineFunction printer to print information about /// stack objects. Implemented in MachineFunction.cpp /// - void print(std::ostream &OS) const; + void print(const MachineFunction &MF, std::ostream &OS) const; - /// dump - Call print(std::cerr) to be called from the debugger. - void dump() const; + /// dump - Call print(MF, std::cerr) to be called from the debugger. + void dump(const MachineFunction &MF) const; }; #endif diff --git a/lib/CodeGen/MachineFunction.cpp b/lib/CodeGen/MachineFunction.cpp index 46036d0b58..7ee2dcf457 100644 --- a/lib/CodeGen/MachineFunction.cpp +++ b/lib/CodeGen/MachineFunction.cpp @@ -120,7 +120,7 @@ void MachineFunction::print(std::ostream &OS) const { << "\"\n"; // Print Frame Information - getFrameInfo()->print(OS); + getFrameInfo()->print(*this, OS); // Print Constant Pool getConstantPool()->print(OS); @@ -188,7 +188,9 @@ int MachineFrameInfo::CreateStackObject(const TargetRegisterClass *RC) { } -void MachineFrameInfo::print(std::ostream &OS) const { +void MachineFrameInfo::print(const MachineFunction &MF, std::ostream &OS) const{ + int ValOffset = MF.getTarget().getFrameInfo().getOffsetOfLocalArea(); + for (unsigned i = 0, e = Objects.size(); i != e; ++i) { const StackObject &SO = Objects[i]; OS << " <fi #" << (int)(i-NumFixedObjects) << "> is "; @@ -200,11 +202,12 @@ void MachineFrameInfo::print(std::ostream &OS) const { if (i < NumFixedObjects) OS << " fixed"; if (i < NumFixedObjects || SO.SPOffset != -1) { + int Off = SO.SPOffset + ValOffset; OS << " at location [SP"; - if (SO.SPOffset > 0) - OS << "+" << SO.SPOffset; - else if (SO.SPOffset < 0) - OS << SO.SPOffset; + if (Off > 0) + OS << "+" << Off; + else if (Off < 0) + OS << Off; OS << "]"; } OS << "\n"; @@ -214,7 +217,9 @@ void MachineFrameInfo::print(std::ostream &OS) const { OS << " Stack frame contains variable sized objects\n"; } -void MachineFrameInfo::dump() const { print(std::cerr); } +void MachineFrameInfo::dump(const MachineFunction &MF) const { + print(MF, std::cerr); +} //===----------------------------------------------------------------------===// |