forked from OSchip/llvm-project
parent
e8565d8eaf
commit
a3fa43932d
|
@ -29,12 +29,8 @@ namespace llvm {
|
|||
|
||||
FunctionPass *createPPCBranchSelectionPass();
|
||||
FunctionPass *createPPCISelDag(PPCTargetMachine &TM);
|
||||
FunctionPass *createPPCCodeEmitterPass(PPCTargetMachine &TM,
|
||||
MachineCodeEmitter &MCE);
|
||||
FunctionPass *createPPCJITCodeEmitterPass(PPCTargetMachine &TM,
|
||||
JITCodeEmitter &MCE);
|
||||
FunctionPass *createPPCObjectCodeEmitterPass(PPCTargetMachine &TM,
|
||||
ObjectCodeEmitter &OCE);
|
||||
|
||||
extern Target ThePPC32Target;
|
||||
extern Target ThePPC64Target;
|
||||
|
|
|
@ -91,22 +91,11 @@ namespace {
|
|||
|
||||
/// createPPCCodeEmitterPass - Return a pass that emits the collected PPC code
|
||||
/// to the specified MCE object.
|
||||
|
||||
FunctionPass *llvm::createPPCCodeEmitterPass(PPCTargetMachine &TM,
|
||||
MachineCodeEmitter &MCE) {
|
||||
return new Emitter<MachineCodeEmitter>(TM, MCE);
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createPPCJITCodeEmitterPass(PPCTargetMachine &TM,
|
||||
JITCodeEmitter &JCE) {
|
||||
return new Emitter<JITCodeEmitter>(TM, JCE);
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createPPCObjectCodeEmitterPass(PPCTargetMachine &TM,
|
||||
ObjectCodeEmitter &OCE) {
|
||||
return new Emitter<ObjectCodeEmitter>(TM, OCE);
|
||||
}
|
||||
|
||||
template <class CodeEmitter>
|
||||
bool Emitter<CodeEmitter>::runOnMachineFunction(MachineFunction &MF) {
|
||||
assert((MF.getTarget().getRelocationModel() != Reloc::Default ||
|
||||
|
|
|
@ -89,33 +89,6 @@ bool PPCTargetMachine::addPreEmitPass(PassManagerBase &PM,
|
|||
return false;
|
||||
}
|
||||
|
||||
bool PPCTargetMachine::addCodeEmitter(PassManagerBase &PM,
|
||||
CodeGenOpt::Level OptLevel,
|
||||
MachineCodeEmitter &MCE) {
|
||||
// The JIT should use the static relocation model in ppc32 mode, PIC in ppc64.
|
||||
// FIXME: This should be moved to TargetJITInfo!!
|
||||
if (Subtarget.isPPC64()) {
|
||||
// We use PIC codegen in ppc64 mode, because otherwise we'd have to use many
|
||||
// instructions to materialize arbitrary global variable + function +
|
||||
// constant pool addresses.
|
||||
setRelocationModel(Reloc::PIC_);
|
||||
// Temporary workaround for the inability of PPC64 JIT to handle jump
|
||||
// tables.
|
||||
DisableJumpTables = true;
|
||||
} else {
|
||||
setRelocationModel(Reloc::Static);
|
||||
}
|
||||
|
||||
// Inform the subtarget that we are in JIT mode. FIXME: does this break macho
|
||||
// writing?
|
||||
Subtarget.SetJITMode();
|
||||
|
||||
// Machine code emitter pass for PowerPC.
|
||||
PM.add(createPPCCodeEmitterPass(*this, MCE));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PPCTargetMachine::addCodeEmitter(PassManagerBase &PM,
|
||||
CodeGenOpt::Level OptLevel,
|
||||
JITCodeEmitter &JCE) {
|
||||
|
@ -143,33 +116,6 @@ bool PPCTargetMachine::addCodeEmitter(PassManagerBase &PM,
|
|||
return false;
|
||||
}
|
||||
|
||||
bool PPCTargetMachine::addCodeEmitter(PassManagerBase &PM,
|
||||
CodeGenOpt::Level OptLevel,
|
||||
ObjectCodeEmitter &OCE) {
|
||||
// The JIT should use the static relocation model in ppc32 mode, PIC in ppc64.
|
||||
// FIXME: This should be moved to TargetJITInfo!!
|
||||
if (Subtarget.isPPC64()) {
|
||||
// We use PIC codegen in ppc64 mode, because otherwise we'd have to use many
|
||||
// instructions to materialize arbitrary global variable + function +
|
||||
// constant pool addresses.
|
||||
setRelocationModel(Reloc::PIC_);
|
||||
// Temporary workaround for the inability of PPC64 JIT to handle jump
|
||||
// tables.
|
||||
DisableJumpTables = true;
|
||||
} else {
|
||||
setRelocationModel(Reloc::Static);
|
||||
}
|
||||
|
||||
// Inform the subtarget that we are in JIT mode. FIXME: does this break macho
|
||||
// writing?
|
||||
Subtarget.SetJITMode();
|
||||
|
||||
// Machine code emitter pass for PowerPC.
|
||||
PM.add(createPPCObjectCodeEmitterPass(*this, OCE));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// getLSDAEncoding - Returns the LSDA pointer encoding. The choices are 4-byte,
|
||||
/// 8-byte, and target default. The CIE is hard-coded to indicate that the LSDA
|
||||
/// pointer in the FDE section is an "sdata4", and should be encoded as a 4-byte
|
||||
|
|
|
@ -72,12 +72,8 @@ public:
|
|||
// Pass Pipeline Configuration
|
||||
virtual bool addInstSelector(PassManagerBase &PM, CodeGenOpt::Level OptLevel);
|
||||
virtual bool addPreEmitPass(PassManagerBase &PM, CodeGenOpt::Level OptLevel);
|
||||
virtual bool addCodeEmitter(PassManagerBase &PM, CodeGenOpt::Level OptLevel,
|
||||
MachineCodeEmitter &MCE);
|
||||
virtual bool addCodeEmitter(PassManagerBase &PM, CodeGenOpt::Level OptLevel,
|
||||
JITCodeEmitter &JCE);
|
||||
virtual bool addCodeEmitter(PassManagerBase &PM, CodeGenOpt::Level OptLevel,
|
||||
ObjectCodeEmitter &OCE);
|
||||
virtual bool getEnableTailMergeDefault() const;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue