//
//===----------------------------------------------------------------------===//
+#include "llvm/DerivedTypes.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/SSARegMap.h"
namespace {
struct VISIBILITY_HIDDEN Printer : public MachineFunctionPass {
+ static char ID;
+
std::ostream *OS;
const std::string Banner;
- Printer (std::ostream *_OS, const std::string &_Banner) :
- OS (_OS), Banner (_Banner) { }
+ Printer (std::ostream *_OS, const std::string &_Banner)
+ : MachineFunctionPass((intptr_t)&ID), OS (_OS), Banner (_Banner) { }
const char *getPassName() const { return "MachineFunction Printer"; }
return false;
}
};
+ char Printer::ID = 0;
}
/// Returns a newly-created MachineFunction Printer pass. The default output
namespace {
struct VISIBILITY_HIDDEN Deleter : public MachineFunctionPass {
+ static char ID;
+ Deleter() : MachineFunctionPass((intptr_t)&ID) {}
+
const char *getPassName() const { return "Machine Code Deleter"; }
bool runOnMachineFunction(MachineFunction &MF) {
return true;
}
};
+ char Deleter::ID = 0;
}
/// MachineCodeDeletion Pass - This pass deletes all of the machine code for
MachineFunction::MachineFunction(const Function *F,
const TargetMachine &TM)
- : Annotation(MF_AID), Fn(F), Target(TM), UsedPhysRegs(0) {
+ : Annotation(MF_AID), Fn(F), Target(TM) {
SSARegMapping = new SSARegMap();
MFInfo = 0;
FrameInfo = new MachineFrameInfo();
ConstantPool = new MachineConstantPool(TM.getTargetData());
+ UsedPhysRegs.resize(TM.getRegisterInfo()->getNumRegs());
// Set up jump table.
const TargetData &TD = *TM.getTargetData();
bool IsPic = TM.getRelocationModel() == Reloc::PIC_;
unsigned EntrySize = IsPic ? 4 : TD.getPointerSize();
- unsigned Alignment = IsPic ? TD.getIntAlignment() : TD.getPointerAlignment();
+ unsigned Alignment = IsPic ? TD.getABITypeAlignment(Type::Int32Ty)
+ : TD.getPointerABIAlignment();
JumpTableInfo = new MachineJumpTableInfo(EntrySize, Alignment);
BasicBlocks.Parent = this;
delete FrameInfo;
delete ConstantPool;
delete JumpTableInfo;
- delete[] UsedPhysRegs;
}
if (i < NumFixedObjects)
OS << " fixed";
if (i < NumFixedObjects || SO.SPOffset != -1) {
- int Off = SO.SPOffset - ValOffset;
+ int64_t Off = SO.SPOffset - ValOffset;
OS << " at location [SP";
if (Off > 0)
OS << "+" << Off;
Constants[i].Val.MachineCPVal->print(OS);
else
OS << *(Value*)Constants[i].Val.ConstVal;
- OS << " , offset=" << Constants[i].Offset;
+ OS << " , offset=" << Constants[i].getOffset();
OS << "\n";
}
}