mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-25 10:27:04 +00:00
Change target-specific classes to use more precise static types.
This eliminates the need for several awkward casts, including the last dynamic_cast under lib/Target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51091 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -38,18 +38,18 @@ namespace {
|
||||
class VISIBILITY_HIDDEN Emitter : public MachineFunctionPass {
|
||||
const X86InstrInfo *II;
|
||||
const TargetData *TD;
|
||||
TargetMachine &TM;
|
||||
X86TargetMachine &TM;
|
||||
MachineCodeEmitter &MCE;
|
||||
intptr_t PICBaseOffset;
|
||||
bool Is64BitMode;
|
||||
bool IsPIC;
|
||||
public:
|
||||
static char ID;
|
||||
explicit Emitter(TargetMachine &tm, MachineCodeEmitter &mce)
|
||||
explicit Emitter(X86TargetMachine &tm, MachineCodeEmitter &mce)
|
||||
: MachineFunctionPass((intptr_t)&ID), II(0), TD(0), TM(tm),
|
||||
MCE(mce), PICBaseOffset(0), Is64BitMode(false),
|
||||
IsPIC(TM.getRelocationModel() == Reloc::PIC_) {}
|
||||
Emitter(TargetMachine &tm, MachineCodeEmitter &mce,
|
||||
Emitter(X86TargetMachine &tm, MachineCodeEmitter &mce,
|
||||
const X86InstrInfo &ii, const TargetData &td, bool is64)
|
||||
: MachineFunctionPass((intptr_t)&ID), II(&ii), TD(&td), TM(tm),
|
||||
MCE(mce), PICBaseOffset(0), Is64BitMode(is64),
|
||||
@@ -112,8 +112,8 @@ bool Emitter::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
MCE.setModuleInfo(&getAnalysis<MachineModuleInfo>());
|
||||
|
||||
II = ((X86TargetMachine&)TM).getInstrInfo();
|
||||
TD = ((X86TargetMachine&)TM).getTargetData();
|
||||
II = TM.getInstrInfo();
|
||||
TD = TM.getTargetData();
|
||||
Is64BitMode = TM.getSubtarget<X86Subtarget>().is64Bit();
|
||||
|
||||
do {
|
||||
@@ -220,7 +220,7 @@ void Emitter::emitJumpTableAddress(unsigned JTI, unsigned Reloc,
|
||||
}
|
||||
|
||||
unsigned Emitter::getX86RegNum(unsigned RegNo) const {
|
||||
return ((const X86RegisterInfo&)II->getRegisterInfo()).getX86RegNum(RegNo);
|
||||
return II->getRegisterInfo().getX86RegNum(RegNo);
|
||||
}
|
||||
|
||||
inline static unsigned char ModRMByte(unsigned Mod, unsigned RegOpcode,
|
||||
@@ -503,7 +503,7 @@ void Emitter::emitInstruction(const MachineInstr &MI,
|
||||
emitConstant(0, X86InstrInfo::sizeOfImm(Desc));
|
||||
// Remember PIC base.
|
||||
PICBaseOffset = MCE.getCurrentPCOffset();
|
||||
X86JITInfo *JTI = dynamic_cast<X86JITInfo*>(TM.getJITInfo());
|
||||
X86JITInfo *JTI = TM.getJITInfo();
|
||||
JTI->setPICBase(MCE.getCurrentPCValue());
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user