mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Add an MCSubtargetInfo variable to the TargetMachine.
This enables us to remove calls to the subtarget from the TargetMachine and with a small hack for backends that require global subtarget information for module level code generation, e.g. mips abi flags, as mentioned in a fixme in the code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232776 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -49,6 +49,12 @@ EnableFastISelOption("fast-isel", cl::Hidden,
|
||||
void LLVMTargetMachine::initAsmInfo() {
|
||||
MRI = TheTarget.createMCRegInfo(getTargetTriple());
|
||||
MII = TheTarget.createMCInstrInfo();
|
||||
// FIXME: Having an MCSubtargetInfo on the target machine is a hack due
|
||||
// to some backends having subtarget feature dependent module level
|
||||
// code generation. This is similar to the hack in the AsmPrinter for
|
||||
// module level assembly etc.
|
||||
STI = TheTarget.createMCSubtargetInfo(getTargetTriple(), getTargetCPU(),
|
||||
getTargetFeatureString());
|
||||
|
||||
MCAsmInfo *TmpAsmInfo = TheTarget.createMCAsmInfo(*MRI, getTargetTriple());
|
||||
// TargetSelect.h moved to a different directory between LLVM 2.9 and 3.0,
|
||||
@ -163,7 +169,7 @@ bool LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
|
||||
if (Options.MCOptions.MCSaveTempLabels)
|
||||
Context->setAllowTemporaryLabels(false);
|
||||
|
||||
const MCSubtargetInfo &STI = getSubtarget<MCSubtargetInfo>();
|
||||
const MCSubtargetInfo &STI = *getMCSubtargetInfo();
|
||||
const MCAsmInfo &MAI = *getMCAsmInfo();
|
||||
const MCRegisterInfo &MRI = *getMCRegisterInfo();
|
||||
const MCInstrInfo &MII = *getMCInstrInfo();
|
||||
@ -249,7 +255,7 @@ bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM,
|
||||
return true;
|
||||
|
||||
Triple T(getTargetTriple());
|
||||
const MCSubtargetInfo &STI = getSubtarget<MCSubtargetInfo>();
|
||||
const MCSubtargetInfo &STI = *getMCSubtargetInfo();
|
||||
std::unique_ptr<MCStreamer> AsmStreamer(getTarget().createMCObjectStreamer(
|
||||
T, *Ctx, *MAB, Out, MCE, STI, Options.MCOptions.MCRelaxAll));
|
||||
|
||||
|
Reference in New Issue
Block a user