aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/CodeGen/MachineFrameInfo.h7
-rw-r--r--lib/CodeGen/MachineFunction.cpp19
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);
+}
//===----------------------------------------------------------------------===//