mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Add a MCTargetStreamer interface.
This patch fixes an old FIXME by creating a MCTargetStreamer interface and moving the target specific functions for ARM, Mips and PPC to it. The ARM streamer is still declared in a common place because it is used from lib/CodeGen/ARMException.cpp, but the Mips and PPC are completely hidden in the corresponding Target directories. I will send an email to llvmdev with instructions on how to use this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192181 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include "MipsAsmPrinter.h"
|
||||
#include "MipsInstrInfo.h"
|
||||
#include "MipsMCInstLower.h"
|
||||
#include "MipsTargetStreamer.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
@@ -44,6 +45,10 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
MipsTargetStreamer &MipsAsmPrinter::getTargetStreamer() {
|
||||
return static_cast<MipsTargetStreamer &>(OutStreamer.getTargetStreamer());
|
||||
}
|
||||
|
||||
bool MipsAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
// Initialize TargetLoweringObjectFile.
|
||||
if (Subtarget->allowMixed16_32())
|
||||
@@ -237,8 +242,8 @@ void MipsAsmPrinter::EmitFunctionEntryLabel() {
|
||||
}
|
||||
|
||||
if (Subtarget->inMicroMipsMode())
|
||||
OutStreamer.emitMipsHackSTOCG(CurrentFnSym,
|
||||
(unsigned)ELF::STO_MIPS_MICROMIPS);
|
||||
getTargetStreamer().emitMipsHackSTOCG(CurrentFnSym,
|
||||
(unsigned)ELF::STO_MIPS_MICROMIPS);
|
||||
OutStreamer.EmitLabel(CurrentFnSym);
|
||||
}
|
||||
|
||||
@@ -585,8 +590,8 @@ void MipsAsmPrinter::EmitStartOfAsmFile(Module &M) {
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
emitELFHeaderFlagsCG(MCStreamer &Streamer, const MipsSubtarget &Subtarget) {
|
||||
static void emitELFHeaderFlagsCG(MipsTargetStreamer &TargetStreamer,
|
||||
const MipsSubtarget &Subtarget) {
|
||||
// Update e_header flags
|
||||
unsigned EFlags = 0;
|
||||
|
||||
@@ -625,14 +630,14 @@ emitELFHeaderFlagsCG(MCStreamer &Streamer, const MipsSubtarget &Subtarget) {
|
||||
else
|
||||
llvm_unreachable("Unsupported relocation model for e_flags");
|
||||
|
||||
Streamer.emitMipsHackELFFlags(EFlags);
|
||||
TargetStreamer.emitMipsHackELFFlags(EFlags);
|
||||
}
|
||||
|
||||
void MipsAsmPrinter::EmitEndOfAsmFile(Module &M) {
|
||||
// Emit Mips ELF register info
|
||||
Subtarget->getMReginfo().emitMipsReginfoSectionCG(
|
||||
OutStreamer, getObjFileLowering(), *Subtarget);
|
||||
emitELFHeaderFlagsCG(OutStreamer, *Subtarget);
|
||||
emitELFHeaderFlagsCG(getTargetStreamer(), *Subtarget);
|
||||
}
|
||||
|
||||
void MipsAsmPrinter::PrintDebugValueComment(const MachineInstr *MI,
|
||||
|
Reference in New Issue
Block a user