diff options
| -rw-r--r-- | llvm/lib/Target/Mips/MipsAsmPrinter.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/MipsAsmPrinter.h | 13 |
2 files changed, 11 insertions, 6 deletions
diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp index 1fb75a290b9..e6f7e1705e8 100644 --- a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp @@ -58,6 +58,8 @@ MipsTargetStreamer &MipsAsmPrinter::getTargetStreamer() { } bool MipsAsmPrinter::runOnMachineFunction(MachineFunction &MF) { + Subtarget = &TM.getSubtarget<MipsSubtarget>(); + // Initialize TargetLoweringObjectFile. if (Subtarget->allowMixed16_32()) const_cast<TargetLoweringObjectFile&>(getObjFileLowering()) @@ -672,7 +674,7 @@ void MipsAsmPrinter::EmitStartOfAsmFile(Module &M) { bool IsABICalls = true; if (IsABICalls) { getTargetStreamer().emitDirectiveAbiCalls(); - Reloc::Model RM = Subtarget->getRelocationModel(); + Reloc::Model RM = TM.getRelocationModel(); // FIXME: This condition should be a lot more complicated that it is here. // Ideally it should test for properties of the ABI and not the ABI // itself. diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.h b/llvm/lib/Target/Mips/MipsAsmPrinter.h index 967aa0b1641..abbd39b571a 100644 --- a/llvm/lib/Target/Mips/MipsAsmPrinter.h +++ b/llvm/lib/Target/Mips/MipsAsmPrinter.h @@ -89,11 +89,14 @@ public: const MipsFunctionInfo *MipsFI; MipsMCInstLower MCInstLowering; - explicit MipsAsmPrinter(TargetMachine &TM, MCStreamer &Streamer) - : AsmPrinter(TM, Streamer), MCP(nullptr), InConstantPool(false), - MCInstLowering(*this) { - Subtarget = &TM.getSubtarget<MipsSubtarget>(); - } + // We initialize the subtarget here and in runOnMachineFunction + // since there are certain target specific flags (ABI) that could + // reside on the TargetMachine, but are on the subtarget currently + // and we need them for the beginning of file output before we've + // seen a single function. + explicit MipsAsmPrinter(TargetMachine &TM, MCStreamer &Streamer) + : AsmPrinter(TM, Streamer), MCP(nullptr), InConstantPool(false), + Subtarget(&TM.getSubtarget<MipsSubtarget>()), MCInstLowering(*this) {} const char *getPassName() const override { return "Mips Assembly Printer"; |

