aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/MachineFunction.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-01-13 00:23:03 +0000
committerChris Lattner <sabre@nondot.org>2003-01-13 00:23:03 +0000
commit4d149cdae1553426f49623fdae215d481d56d955 (patch)
treed056b778286c4638aaeb62bfb3df9d17ecd61f7d /lib/CodeGen/MachineFunction.cpp
parent7775df1a6c499bb24479d1f0e1420ba89f686fbb (diff)
Add support for constant pool
Add helper methods for MachineFrameInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5216 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineFunction.cpp')
-rw-r--r--lib/CodeGen/MachineFunction.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/lib/CodeGen/MachineFunction.cpp b/lib/CodeGen/MachineFunction.cpp
index 6763f10d60..46036d0b58 100644
--- a/lib/CodeGen/MachineFunction.cpp
+++ b/lib/CodeGen/MachineFunction.cpp
@@ -12,6 +12,7 @@
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/CodeGen/MachineFunctionInfo.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
+#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetFrameInfo.h"
#include "llvm/Target/TargetCacheInfo.h"
@@ -102,12 +103,14 @@ MachineFunction::MachineFunction(const Function *F,
SSARegMapping = new SSARegMap();
MFInfo = new MachineFunctionInfo(*this);
FrameInfo = new MachineFrameInfo();
+ ConstantPool = new MachineConstantPool();
}
MachineFunction::~MachineFunction() {
delete SSARegMapping;
delete MFInfo;
delete FrameInfo;
+ delete ConstantPool;
}
void MachineFunction::dump() const { print(std::cerr); }
@@ -118,6 +121,9 @@ void MachineFunction::print(std::ostream &OS) const {
// Print Frame Information
getFrameInfo()->print(OS);
+
+ // Print Constant Pool
+ getConstantPool()->print(OS);
for (const_iterator BB = begin(); BB != end(); ++BB) {
BasicBlock *LBB = BB->getBasicBlock();
@@ -171,10 +177,21 @@ void MachineFunction::clearSSARegMap() {
// MachineFrameInfo implementation
//===----------------------------------------------------------------------===//
+/// CreateStackObject - Create a stack object for a value of the specified type.
+///
+int MachineFrameInfo::CreateStackObject(const Type *Ty, const TargetData &TD) {
+ return CreateStackObject(TD.getTypeSize(Ty), TD.getTypeAlignment(Ty));
+}
+
+int MachineFrameInfo::CreateStackObject(const TargetRegisterClass *RC) {
+ return CreateStackObject(RC->getSize(), RC->getAlignment());
+}
+
+
void MachineFrameInfo::print(std::ostream &OS) const {
for (unsigned i = 0, e = Objects.size(); i != e; ++i) {
const StackObject &SO = Objects[i];
- OS << " <fi# " << (int)(i-NumFixedObjects) << "> is ";
+ OS << " <fi #" << (int)(i-NumFixedObjects) << "> is ";
if (SO.Size == 0)
OS << "variable sized";
else
@@ -201,6 +218,17 @@ void MachineFrameInfo::dump() const { print(std::cerr); }
//===----------------------------------------------------------------------===//
+// MachineConstantPool implementation
+//===----------------------------------------------------------------------===//
+
+void MachineConstantPool::print(std::ostream &OS) const {
+ for (unsigned i = 0, e = Constants.size(); i != e; ++i)
+ OS << " <cp #" << i << "> is" << *(Value*)Constants[i] << "\n";
+}
+
+void MachineConstantPool::dump() const { print(std::cerr); }
+
+//===----------------------------------------------------------------------===//
// MachineFunctionInfo implementation
//===----------------------------------------------------------------------===//