-//===-- llvm/CodeGen/MachineCodeForBasicBlock.h -----------------*- C++ -*--=//
+//===-- llvm/CodeGen/MachineBasicBlock.h ------------------------*- C++ -*--=//
//
// Collect the sequence of machine instructions for a basic block.
//
//===---------------------------------------------------------------------===//
-#ifndef LLVM_CODEGEN_MACHINECODEFORBASICBLOCK_H
-#define LLVM_CODEGEN_MACHINECODEFORBASICBLOCK_H
+#ifndef LLVM_CODEGEN_MACHINEBASICBLOCK_H
+#define LLVM_CODEGEN_MACHINEBASICBLOCK_H
#include "llvm/BasicBlock.h"
class MachineInstr;
extern AnnotationID MCFBB_AID;
-class MachineCodeForBasicBlock : public Annotation {
+// FIXME: this should go away soon
+class MachineBasicBlock;
+typedef MachineBasicBlock MachineCodeForBasicBlock;
+
+class MachineBasicBlock: public Annotation {
std::vector<MachineInstr*> Insts;
public:
- MachineCodeForBasicBlock();
- ~MachineCodeForBasicBlock() {}
+ MachineBasicBlock();
+ ~MachineBasicBlock() {}
- // Static methods to retrieve or destroy the MachineCodeForBasicBlock
+ // Static methods to retrieve or destroy the MachineBasicBlock
// object for a given basic block.
- static MachineCodeForBasicBlock& get(const BasicBlock *bb) {
- return *(MachineCodeForBasicBlock*)bb->getOrCreateAnnotation(MCFBB_AID);
+ static MachineBasicBlock& get(const BasicBlock *bb) {
+ return *(MachineBasicBlock*)bb->getOrCreateAnnotation(MCFBB_AID);
}
static void destroy(const BasicBlock *bb) {
-//===-- llvm/CodeGen/MachineCodeForBasicBlock.h -----------------*- C++ -*--=//
+//===-- llvm/CodeGen/MachineBasicBlock.h ------------------------*- C++ -*--=//
//
// Collect the sequence of machine instructions for a basic block.
//
//===---------------------------------------------------------------------===//
-#ifndef LLVM_CODEGEN_MACHINECODEFORBASICBLOCK_H
-#define LLVM_CODEGEN_MACHINECODEFORBASICBLOCK_H
+#ifndef LLVM_CODEGEN_MACHINEBASICBLOCK_H
+#define LLVM_CODEGEN_MACHINEBASICBLOCK_H
#include "llvm/BasicBlock.h"
class MachineInstr;
extern AnnotationID MCFBB_AID;
-class MachineCodeForBasicBlock : public Annotation {
+// FIXME: this should go away soon
+class MachineBasicBlock;
+typedef MachineBasicBlock MachineCodeForBasicBlock;
+
+class MachineBasicBlock: public Annotation {
std::vector<MachineInstr*> Insts;
public:
- MachineCodeForBasicBlock();
- ~MachineCodeForBasicBlock() {}
+ MachineBasicBlock();
+ ~MachineBasicBlock() {}
- // Static methods to retrieve or destroy the MachineCodeForBasicBlock
+ // Static methods to retrieve or destroy the MachineBasicBlock
// object for a given basic block.
- static MachineCodeForBasicBlock& get(const BasicBlock *bb) {
- return *(MachineCodeForBasicBlock*)bb->getOrCreateAnnotation(MCFBB_AID);
+ static MachineBasicBlock& get(const BasicBlock *bb) {
+ return *(MachineBasicBlock*)bb->getOrCreateAnnotation(MCFBB_AID);
}
static void destroy(const BasicBlock *bb) {
-//===-- llvm/CodeGen/MachineCodeForMethod.h ----------------------*- C++ -*--=//
+//===-- llvm/CodeGen/MachineFunction.h ----------------------*- C++ -*--=//
//
// Purpose:
// Collect native machine code information for a method.
// to be stored with each method.
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CODEGEN_MACHINECODEFORMETHOD_H
-#define LLVM_CODEGEN_MACHINECODEFORMETHOD_H
+#ifndef LLVM_CODEGEN_MACHINEFUNCTION_H
+#define LLVM_CODEGEN_MACHINEFUNCTION_H
#include "llvm/Annotation.h"
#include "Support/NonCopyable.h"
class Type;
class TargetMachine;
+// FIXME: this should go away soon
+class MachineFunction;
+typedef MachineFunction MachineCodeForMethod;
-class MachineCodeForMethod : private Annotation {
+class MachineFunction : private Annotation {
hash_set<const Constant*> constantsForConstPool;
hash_map<const Value*, int> offsets;
const Function* method;
bool automaticVarsAreaFrozen;
public:
- /*ctor*/ MachineCodeForMethod(const Function* function,
+ /*ctor*/ MachineFunction(const Function* function,
const TargetMachine& target);
// The next two methods are used to construct and to retrieve
- // the MachineCodeForMethod object for the given method.
+ // the MachineFunction object for the given method.
// construct() -- Allocates and initializes for a given method and target
// get() -- Returns a handle to the object.
// This should not be called before "construct()"
// for a given Method.
//
- static MachineCodeForMethod& construct(const Function *method,
+ static MachineFunction& construct(const Function *method,
const TargetMachine &target);
static void destruct(const Function *F);
- static MachineCodeForMethod& get(const Function* function);
+ static MachineFunction& get(const Function* function);
//
// Accessors for global information about generated code for a method.
-//===-- llvm/CodeGen/MachineCodeForMethod.h ----------------------*- C++ -*--=//
+//===-- llvm/CodeGen/MachineFunction.h ---------------------------*- C++ -*--=//
//
-// Purpose:
-// Collect native machine code information for a method.
-// This allows target-specific information about the generated code
-// to be stored with each method.
+// Collect native machine code information for a method. This allows
+// target-specific information about the generated code to be stored with each
+// method.
+//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CODEGEN_MACHINECODEFORMETHOD_H
-#define LLVM_CODEGEN_MACHINECODEFORMETHOD_H
+#ifndef LLVM_CODEGEN_MACHINEFUNCTION_H
+#define LLVM_CODEGEN_MACHINEFUNCTION_H
#include "llvm/Annotation.h"
#include "Support/NonCopyable.h"
class TargetMachine;
-class MachineCodeForMethod : private Annotation {
+class MachineFunction : private Annotation {
hash_set<const Constant*> constantsForConstPool;
hash_map<const Value*, int> offsets;
const Function* method;
bool automaticVarsAreaFrozen;
public:
- /*ctor*/ MachineCodeForMethod(const Function* function,
- const TargetMachine& target);
+ /*ctor*/ MachineFunction(const Function* function,
+ const TargetMachine& target);
// The next two methods are used to construct and to retrieve
- // the MachineCodeForMethod object for the given method.
+ // the MachineFunction object for the given method.
// construct() -- Allocates and initializes for a given method and target
// get() -- Returns a handle to the object.
// This should not be called before "construct()"
// for a given Method.
//
- static MachineCodeForMethod& construct(const Function *method,
+ static MachineFunction& construct(const Function *method,
const TargetMachine &target);
static void destruct(const Function *F);
- static MachineCodeForMethod& get(const Function* function);
+ static MachineFunction& get(const Function* function);
//
// Accessors for global information about generated code for a method.
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
// Symbolic constants or constants that must be accessed from memory
- // are added to the constant pool via MachineCodeForMethod::get(F).
+ // are added to the constant pool via MachineFunction::get(F).
//
virtual void CreateCodeToLoadConst(const TargetMachine& target,
Function* F,
#include "Support/NonCopyable.h"
#include <vector>
-class MachineCodeForMethod;
+class MachineFunction;
class TargetMachine;
struct MachineFrameInfo : public NonCopyableV {
// The first few methods have default machine-independent implementations.
// The rest must be implemented by the machine-specific subclass.
//
- virtual int getIncomingArgOffset (MachineCodeForMethod& mcInfo,
+ virtual int getIncomingArgOffset (MachineFunction& mcInfo,
unsigned argNum) const;
- virtual int getOutgoingArgOffset (MachineCodeForMethod& mcInfo,
+ virtual int getOutgoingArgOffset (MachineFunction& mcInfo,
unsigned argNum) const;
- virtual int getFirstIncomingArgOffset (MachineCodeForMethod& mcInfo,
+ virtual int getFirstIncomingArgOffset (MachineFunction& mcInfo,
bool& growUp) const=0;
- virtual int getFirstOutgoingArgOffset (MachineCodeForMethod& mcInfo,
+ virtual int getFirstOutgoingArgOffset (MachineFunction& mcInfo,
bool& growUp) const=0;
- virtual int getFirstOptionalOutgoingArgOffset (MachineCodeForMethod&,
+ virtual int getFirstOptionalOutgoingArgOffset (MachineFunction&,
bool& growUp) const=0;
- virtual int getFirstAutomaticVarOffset (MachineCodeForMethod& mcInfo,
+ virtual int getFirstAutomaticVarOffset (MachineFunction& mcInfo,
bool& growUp) const=0;
- virtual int getRegSpillAreaOffset (MachineCodeForMethod& mcInfo,
+ virtual int getRegSpillAreaOffset (MachineFunction& mcInfo,
bool& growUp) const=0;
- virtual int getTmpAreaOffset (MachineCodeForMethod& mcInfo,
+ virtual int getTmpAreaOffset (MachineFunction& mcInfo,
bool& growUp) const=0;
- virtual int getDynamicAreaOffset (MachineCodeForMethod& mcInfo,
+ virtual int getDynamicAreaOffset (MachineFunction& mcInfo,
bool& growUp) const=0;
//
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
// Symbolic constants or constants that must be accessed from memory
- // are added to the constant pool via MachineCodeForMethod::get(F).
+ // are added to the constant pool via MachineFunction::get(F).
//
virtual void CreateCodeToLoadConst(const TargetMachine& target,
Function* F,
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/Analysis/LiveVar/FunctionLiveVarInfo.h" // FIXME: Remove when modularized better
#include "llvm/Target/TargetMachine.h"
#include "llvm/BasicBlock.h"
if (SchedDebugLevel >= Sched_PrintMachineCode)
{
cerr << "\n*** Machine instructions after INSTRUCTION SCHEDULING\n";
- MachineCodeForMethod::get(&F).dump();
+ MachineFunction::get(&F).dump();
}
return false;
class ValueToDefVecMap;
class RefVec;
class MachineInstr;
-class MachineCodeForBasicBlock;
+class MachineBasicBlock;
/******************** Exported Data Types and Constants ********************/
const TargetMachine& target);
void addCallCCEdges (const std::vector<SchedGraphNode*>& memNod,
- MachineCodeForBasicBlock& bbMvec,
+ MachineBasicBlock& bbMvec,
const TargetMachine& target);
void addMachineRegEdges (RegToRefVecMap& regToRefVecMap,
#include "llvm/CodeGen/InstrForest.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/Target/MachineRegInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Function.h"
if (SelectDebugLevel >= Select_PrintMachineCode)
{
cerr << "\n*** Machine instructions after INSTRUCTION SELECTION\n";
- MachineCodeForMethod::get(&F).dump();
+ MachineFunction::get(&F).dump();
}
return true;
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrAnnot.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/InstrForest.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/MachineRegInfo.h"
// to be stored with each function.
//===---------------------------------------------------------------------===//
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h" // For debug output
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
#include "llvm/Target/TargetMachine.h"
// This should not be called before "construct()"
// for a given Function.
//
-MachineCodeForMethod&
-MachineCodeForMethod::construct(const Function *M, const TargetMachine &Tar)
+MachineFunction&
+MachineFunction::construct(const Function *M, const TargetMachine &Tar)
{
assert(M->getAnnotation(MCFM_AID) == 0 &&
"Object already exists for this function!");
- MachineCodeForMethod* mcInfo = new MachineCodeForMethod(M, Tar);
+ MachineFunction* mcInfo = new MachineFunction(M, Tar);
M->addAnnotation(mcInfo);
return *mcInfo;
}
void
-MachineCodeForMethod::destruct(const Function *M)
+MachineFunction::destruct(const Function *M)
{
bool Deleted = M->deleteAnnotation(MCFM_AID);
assert(Deleted && "Machine code did not exist for function!");
}
-MachineCodeForMethod&
-MachineCodeForMethod::get(const Function *F)
+MachineFunction&
+MachineFunction::get(const Function *F)
{
- MachineCodeForMethod *mc = (MachineCodeForMethod*)F->getAnnotation(MCFM_AID);
+ MachineFunction *mc = (MachineFunction*)F->getAnnotation(MCFM_AID);
assert(mc && "Call construct() method first to allocate the object");
return *mc;
}
/*ctor*/
-MachineCodeForMethod::MachineCodeForMethod(const Function *F,
+MachineFunction::MachineFunction(const Function *F,
const TargetMachine& target)
: Annotation(MCFM_AID),
method(F), staticStackSize(0),
}
int
-MachineCodeForMethod::computeOffsetforLocalVar(const TargetMachine& target,
+MachineFunction::computeOffsetforLocalVar(const TargetMachine& target,
const Value* val,
unsigned int& getPaddedSize,
unsigned int sizeToUse)
}
int
-MachineCodeForMethod::allocateLocalVar(const TargetMachine& target,
+MachineFunction::allocateLocalVar(const TargetMachine& target,
const Value* val,
unsigned int sizeToUse)
{
}
int
-MachineCodeForMethod::allocateSpilledValue(const TargetMachine& target,
+MachineFunction::allocateSpilledValue(const TargetMachine& target,
const Type* type)
{
assert(! spillsAreaFrozen &&
}
int
-MachineCodeForMethod::pushTempValue(const TargetMachine& target,
+MachineFunction::pushTempValue(const TargetMachine& target,
unsigned int size)
{
unsigned int align = SizeToAlignment(size, target);
}
void
-MachineCodeForMethod::popAllTempValues(const TargetMachine& target)
+MachineFunction::popAllTempValues(const TargetMachine& target)
{
resetTmpAreaSize(); // clear tmp area to reuse
}
int
-MachineCodeForMethod::getOffset(const Value* val) const
+MachineFunction::getOffset(const Value* val) const
{
hash_map<const Value*, int>::const_iterator pair = offsets.find(val);
return (pair == offsets.end())? INVALID_FRAME_OFFSET : pair->second;
}
void
-MachineCodeForMethod::dump() const
+MachineFunction::dump() const
{
std::cerr << "\n" << method->getReturnType()
<< " \"" << method->getName() << "\"\n";
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrAnnot.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/Analysis/LiveVar/FunctionLiveVarInfo.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Target/TargetMachine.h"
PhyRegAlloc::PhyRegAlloc(Function *F, const TargetMachine& tm,
FunctionLiveVarInfo *Lvi, LoopInfo *LDC)
: TM(tm), Meth(F),
- mcInfo(MachineCodeForMethod::get(F)),
+ mcInfo(MachineFunction::get(F)),
LVI(Lvi), LRI(F, tm, RegClassList),
MRI(tm.getRegInfo()),
NumOfRegClasses(MRI.getNumOfRegClasses()),
if (DEBUG_RA) {
cerr << "\n**** Machine Code After Register Allocation:\n\n";
- MachineCodeForMethod::get(Meth).dump();
+ MachineFunction::get(Meth).dump();
}
}
#include <vector>
#include <map>
-class MachineCodeForMethod;
+class MachineFunction;
class MachineRegInfo;
class FunctionLiveVarInfo;
class MachineInstr;
std::vector<RegClass *> RegClassList; // vector of register classes
const TargetMachine &TM; // target machine
const Function *Meth; // name of the function we work on
- MachineCodeForMethod &mcInfo; // descriptor for method's native code
+ MachineFunction &mcInfo; // descriptor for method's native code
FunctionLiveVarInfo *const LVI; // LV information for this method
// (already computed for BBs)
LiveRangeInfo LRI; // LR info (will be computed)
//===----------------------------------------------------------------------===//
#include "llvm/Target/MachineFrameInfo.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
int
-MachineFrameInfo::getIncomingArgOffset(MachineCodeForMethod& mcInfo,
+MachineFrameInfo::getIncomingArgOffset(MachineFunction& mcInfo,
unsigned argNum) const
{
assert(argsOnStackHaveFixedSize());
int
-MachineFrameInfo::getOutgoingArgOffset(MachineCodeForMethod& mcInfo,
+MachineFrameInfo::getOutgoingArgOffset(MachineFunction& mcInfo,
unsigned argNum) const
{
assert(argsOnStackHaveFixedSize());
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/Analysis/LiveVar/FunctionLiveVarInfo.h" // FIXME: Remove when modularized better
#include "llvm/Target/TargetMachine.h"
#include "llvm/BasicBlock.h"
if (SchedDebugLevel >= Sched_PrintMachineCode)
{
cerr << "\n*** Machine instructions after INSTRUCTION SCHEDULING\n";
- MachineCodeForMethod::get(&F).dump();
+ MachineFunction::get(&F).dump();
}
return false;
class ValueToDefVecMap;
class RefVec;
class MachineInstr;
-class MachineCodeForBasicBlock;
+class MachineBasicBlock;
/******************** Exported Data Types and Constants ********************/
const TargetMachine& target);
void addCallCCEdges (const std::vector<SchedGraphNode*>& memNod,
- MachineCodeForBasicBlock& bbMvec,
+ MachineBasicBlock& bbMvec,
const TargetMachine& target);
void addMachineRegEdges (RegToRefVecMap& regToRefVecMap,
#include "llvm/CodeGen/InstrForest.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/Target/MachineRegInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Function.h"
if (SelectDebugLevel >= Select_PrintMachineCode)
{
cerr << "\n*** Machine instructions after INSTRUCTION SELECTION\n";
- MachineCodeForMethod::get(&F).dump();
+ MachineFunction::get(&F).dump();
}
return true;
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrAnnot.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/InstrForest.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/MachineRegInfo.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrAnnot.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/Analysis/LiveVar/FunctionLiveVarInfo.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Target/TargetMachine.h"
PhyRegAlloc::PhyRegAlloc(Function *F, const TargetMachine& tm,
FunctionLiveVarInfo *Lvi, LoopInfo *LDC)
: TM(tm), Meth(F),
- mcInfo(MachineCodeForMethod::get(F)),
+ mcInfo(MachineFunction::get(F)),
LVI(Lvi), LRI(F, tm, RegClassList),
MRI(tm.getRegInfo()),
NumOfRegClasses(MRI.getNumOfRegClasses()),
if (DEBUG_RA) {
cerr << "\n**** Machine Code After Register Allocation:\n\n";
- MachineCodeForMethod::get(Meth).dump();
+ MachineFunction::get(Meth).dump();
}
}
#include <vector>
#include <map>
-class MachineCodeForMethod;
+class MachineFunction;
class MachineRegInfo;
class FunctionLiveVarInfo;
class MachineInstr;
std::vector<RegClass *> RegClassList; // vector of register classes
const TargetMachine &TM; // target machine
const Function *Meth; // name of the function we work on
- MachineCodeForMethod &mcInfo; // descriptor for method's native code
+ MachineFunction &mcInfo; // descriptor for method's native code
FunctionLiveVarInfo *const LVI; // LV information for this method
// (already computed for BBs)
LiveRangeInfo LRI; // LR info (will be computed)
#include "SparcInternals.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/Constants.h"
#include "llvm/DerivedTypes.h"
#include "llvm/Module.h"
for (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I)
if (!I->isExternal()) {
const hash_set<const Constant*> &pool =
- MachineCodeForMethod::get(I).getConstantPoolValues();
+ MachineFunction::get(I).getConstantPoolValues();
MC.insert(pool.begin(), pool.end());
}
}
#include "SparcInstrSelectionSupport.h"
#include "llvm/CodeGen/InstrSelection.h"
#include "llvm/CodeGen/InstrSelectionSupport.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/Function.h"
#include "llvm/Constants.h"
// GlobalValue, viz., the constant address of a global variable or function.
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
-// Any stack space required is allocated via MachineCodeForMethod.
+// Any stack space required is allocated via MachineFunction.
//
void
UltraSparcInstrInfo::CreateCodeToLoadConst(const TargetMachine& target,
mvec.push_back(MI);
// Make sure constant is emitted to constant pool in assembly code.
- MachineCodeForMethod::get(F).addToConstantPool(cast<Constant>(val));
+ MachineFunction::get(F).addToConstantPool(cast<Constant>(val));
}
}
// val must be an integral type. dest must be a Float or Double.
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
-// Any stack space required is allocated via MachineCodeForMethod.
+// Any stack space required is allocated via MachineFunction.
//
void
UltraSparcInstrInfo::CreateCodeToCopyIntToFloat(const TargetMachine& target,
&& "Dest type must be float/double");
// Get a stack slot to use for the copy
- int offset = MachineCodeForMethod::get(F).allocateLocalVar(target, val);
+ int offset = MachineFunction::get(F).allocateLocalVar(target, val);
// Get the size of the source value being copied.
size_t srcSize = target.DataLayout.getTypeSize(val->getType());
// `val' to an integer register `dest' by copying to memory and back.
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
-// Any stack space required is allocated via MachineCodeForMethod.
+// Any stack space required is allocated via MachineFunction.
//
void
UltraSparcInstrInfo::CreateCodeToCopyFloatToInt(const TargetMachine& target,
assert((destTy->isIntegral() || isa<PointerType>(destTy))
&& "Dest type must be integer, bool or pointer");
- int offset = MachineCodeForMethod::get(F).allocateLocalVar(target, val);
+ int offset = MachineFunction::get(F).allocateLocalVar(target, val);
// Store instruction stores `val' to [%fp+offset].
// The store opCode is based only the source value being copied.
// Create instruction(s) to copy src to dest, for arbitrary types
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
-// Any stack space required is allocated via MachineCodeForMethod.
+// Any stack space required is allocated via MachineFunction.
//
void
UltraSparcInstrInfo::CreateCopyInstructionsByType(const TargetMachine& target,
// from an arbitrary-sized integer value (sized in bits, not bytes).
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
-// Any stack space required is allocated via MachineCodeForMethod.
+// Any stack space required is allocated via MachineFunction.
//
void
UltraSparcInstrInfo::CreateSignExtensionInstructions(
// For SPARC v9, we sign-extend the given operand using SLL; SRL.
// The generated instructions are returned in `mvec'.
// Any temp. registers (TmpInstruction) created are recorded in mcfi.
-// Any stack space required is allocated via MachineCodeForMethod.
+// Any stack space required is allocated via MachineFunction.
//
void
UltraSparcInstrInfo::CreateZeroExtensionInstructions(
#include "llvm/CodeGen/MachineInstrAnnot.h"
#include "llvm/CodeGen/InstrForest.h"
#include "llvm/CodeGen/InstrSelection.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/DerivedTypes.h"
#include "llvm/iTerminators.h"
// and create a temporary Value to hold it.
assert(result && result->getParent() && "Result value is not part of a fn?");
Function *F = result->getParent()->getParent();
- MachineCodeForMethod& mcInfo = MachineCodeForMethod::get(F);
+ MachineFunction& mcInfo = MachineFunction::get(F);
bool growUp;
ConstantSInt* dynamicAreaOffset =
ConstantSInt::get(Type::IntTy,
assert(result && result->getParent() &&
"Result value is not part of a function?");
Function *F = result->getParent()->getParent();
- MachineCodeForMethod &mcInfo = MachineCodeForMethod::get(F);
+ MachineFunction &mcInfo = MachineFunction::get(F);
// Check if the offset would small enough to use as an immediate in
// load/stores (check LDX because all load/stores have the same-size immediate
// particular function. The frame contents are obtained from the
// MachineCodeInfoForMethod object for the given function.
//
- int getFirstIncomingArgOffset (MachineCodeForMethod& mcInfo,
+ int getFirstIncomingArgOffset (MachineFunction& mcInfo,
bool& growUp) const
{
growUp = true; // arguments area grows upwards
return FirstIncomingArgOffsetFromFP;
}
- int getFirstOutgoingArgOffset (MachineCodeForMethod& mcInfo,
+ int getFirstOutgoingArgOffset (MachineFunction& mcInfo,
bool& growUp) const
{
growUp = true; // arguments area grows upwards
return FirstOutgoingArgOffsetFromSP;
}
- int getFirstOptionalOutgoingArgOffset(MachineCodeForMethod& mcInfo,
+ int getFirstOptionalOutgoingArgOffset(MachineFunction& mcInfo,
bool& growUp)const
{
growUp = true; // arguments area grows upwards
return FirstOptionalOutgoingArgOffsetFromSP;
}
- int getFirstAutomaticVarOffset (MachineCodeForMethod& mcInfo,
+ int getFirstAutomaticVarOffset (MachineFunction& mcInfo,
bool& growUp) const;
- int getRegSpillAreaOffset (MachineCodeForMethod& mcInfo,
+ int getRegSpillAreaOffset (MachineFunction& mcInfo,
bool& growUp) const;
- int getTmpAreaOffset (MachineCodeForMethod& mcInfo,
+ int getTmpAreaOffset (MachineFunction& mcInfo,
bool& growUp) const;
- int getDynamicAreaOffset (MachineCodeForMethod& mcInfo,
+ int getDynamicAreaOffset (MachineFunction& mcInfo,
bool& growUp) const;
//
#include "SparcInternals.h"
#include "SparcRegClassInfo.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/CodeGen/MachineInstr.h"
const char *getPassName() const { return "Sparc Prolog/Epilog Inserter"; }
bool runOnFunction(Function &F) {
- MachineCodeForMethod &mcodeInfo = MachineCodeForMethod::get(&F);
+ MachineFunction &mcodeInfo = MachineFunction::get(&F);
if (!mcodeInfo.isCompiledAsLeafMethod()) {
InsertPrologCode(F);
InsertEpilogCode(F);
// immediate field, we have to use a free register to hold the size.
// See the comments below for the choice of this register.
//
- MachineCodeForMethod& mcInfo = MachineCodeForMethod::get(&F);
+ MachineFunction& mcInfo = MachineFunction::get(&F);
unsigned int staticStackSize = mcInfo.getStaticStackSize();
if (staticStackSize < (unsigned) frameInfo.getMinStackFrameSize())
#include "SparcInternals.h"
#include "SparcRegClassInfo.h"
#include "llvm/Target/Sparc.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/PhyRegAlloc.h"
#include "llvm/CodeGen/InstrSelection.h"
#include "llvm/CodeGen/InstrSelectionSupport.h"
regClassIDOfArgReg == IntRegClassID &&
"This should only be an Int register for an FP argument");
- int TmpOff = MachineCodeForMethod::get(Meth).pushTempValue(target,
+ int TmpOff = MachineFunction::get(Meth).pushTempValue(target,
getSpilledRegSize(regType));
cpReg2MemMI(FirstAI->InstrnsBefore,
UniArgReg, getFramePointer(), TmpOff, IntRegType);
//
const MachineFrameInfo& frameInfo = target.getFrameInfo();
int offsetFromFP =
- frameInfo.getIncomingArgOffset(MachineCodeForMethod::get(Meth),
+ frameInfo.getIncomingArgOffset(MachineFunction::get(Meth),
argNo);
cpMem2RegMI(FirstAI->InstrnsBefore,
const MachineFrameInfo& frameInfo = target.getFrameInfo();
int offsetFromFP =
- frameInfo.getIncomingArgOffset(MachineCodeForMethod::get(Meth),
+ frameInfo.getIncomingArgOffset(MachineFunction::get(Meth),
argNo);
LR->modifySpillOffFromFP( offsetFromFP );
#include "llvm/Function.h"
#include "llvm/DerivedTypes.h"
#include "llvm/Pass.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
class StackSlots : public FunctionPass {
const TargetMachine &Target;
const Type *PtrInt = PointerType::get(Type::IntTy);
unsigned Size = Target.DataLayout.getTypeSize(PtrInt);
- MachineCodeForMethod &mcInfo = MachineCodeForMethod::get(&F);
+ MachineFunction &mcInfo = MachineFunction::get(&F);
Value *V = Constant::getNullValue(Type::IntTy);
mcInfo.allocateLocalVar(Target, V, 2*Size);
return true;
#include "SparcInternals.h"
#include "llvm/Target/Sparc.h"
#include "llvm/Function.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
using std::cerr;
// Build the MachineInstruction Description Array...
//---------------------------------------------------------------------------
int
-UltraSparcFrameInfo::getFirstAutomaticVarOffset(MachineCodeForMethod& ,
+UltraSparcFrameInfo::getFirstAutomaticVarOffset(MachineFunction& ,
bool& pos) const
{
pos = false; // static stack area grows downwards
}
int
-UltraSparcFrameInfo::getRegSpillAreaOffset(MachineCodeForMethod& mcInfo,
+UltraSparcFrameInfo::getRegSpillAreaOffset(MachineFunction& mcInfo,
bool& pos) const
{
mcInfo.freezeAutomaticVarsArea(); // ensure no more auto vars are added
}
int
-UltraSparcFrameInfo::getTmpAreaOffset(MachineCodeForMethod& mcInfo,
+UltraSparcFrameInfo::getTmpAreaOffset(MachineFunction& mcInfo,
bool& pos) const
{
mcInfo.freezeAutomaticVarsArea(); // ensure no more auto vars are added
}
int
-UltraSparcFrameInfo::getDynamicAreaOffset(MachineCodeForMethod& mcInfo,
+UltraSparcFrameInfo::getDynamicAreaOffset(MachineFunction& mcInfo,
bool& pos) const
{
// Dynamic stack area grows downwards starting at top of opt-args area.
#include "llvm/CodeGen/InstrScheduling.h"
#include "llvm/CodeGen/RegisterAllocation.h"
#include "llvm/CodeGen/PeepholeOpts.h"
-#include "llvm/CodeGen/MachineCodeForMethod.h"
+#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineCodeForInstruction.h"
#include "llvm/Reoptimizer/Mapping/MappingInfo.h"
#include "llvm/Reoptimizer/Mapping/FInfo.h"
}
bool runOnFunction(Function &F) {
- MachineCodeForMethod::construct(&F, Target);
+ MachineFunction::construct(&F, Target);
return false;
}
};
void
TargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out)
{
- // Construct and initialize the MachineCodeForMethod object for this fn.
+ // Construct and initialize the MachineFunction object for this fn.
PM.add(new ConstructMachineCodeForFunction(*this));
//Insert empty stackslots in the stack frame of each function