mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
More refactoring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135939 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f55c1c8588
commit
a87e40f16f
@ -14,7 +14,6 @@ tablegen(X86GenEDInfo.inc -gen-enhanced-disassembly-info)
|
||||
|
||||
set(sources
|
||||
SSEDomainFix.cpp
|
||||
X86AsmBackend.cpp
|
||||
X86AsmPrinter.cpp
|
||||
X86COFFMachineModuleInfo.cpp
|
||||
X86CodeEmitter.cpp
|
||||
@ -26,8 +25,6 @@ set(sources
|
||||
X86ISelLowering.cpp
|
||||
X86InstrInfo.cpp
|
||||
X86JITInfo.cpp
|
||||
X86MachObjectWriter.cpp
|
||||
X86MCCodeEmitter.cpp
|
||||
X86MCInstLower.cpp
|
||||
X86RegisterInfo.cpp
|
||||
X86SelectionDAGInfo.cpp
|
||||
|
@ -1,6 +1,9 @@
|
||||
add_llvm_library(LLVMX86Desc
|
||||
X86AsmBackend.cpp
|
||||
X86MCTargetDesc.cpp
|
||||
X86MCAsmInfo.cpp
|
||||
X86MCCodeEmitter.cpp
|
||||
X86MachObjectWriter.cpp
|
||||
)
|
||||
|
||||
# Hack: we need to include 'main' target directory to grab private headers
|
||||
|
@ -8,7 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/MC/TargetAsmBackend.h"
|
||||
#include "X86.h"
|
||||
#include "MCTargetDesc/X86BaseInfo.h"
|
||||
#include "MCTargetDesc/X86FixupKinds.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "llvm/MC/MCAssembler.h"
|
@ -16,6 +16,7 @@
|
||||
#include "llvm/MC/MachineLocation.h"
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCStreamer.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/Target/TargetRegistry.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
@ -363,6 +364,23 @@ static MCCodeGenInfo *createX86MCCodeGenInfo(StringRef TT, Reloc::Model RM,
|
||||
return X;
|
||||
}
|
||||
|
||||
static MCStreamer *createMCStreamer(const Target &T, const std::string &TT,
|
||||
MCContext &Ctx, TargetAsmBackend &TAB,
|
||||
raw_ostream &_OS,
|
||||
MCCodeEmitter *_Emitter,
|
||||
bool RelaxAll,
|
||||
bool NoExecStack) {
|
||||
Triple TheTriple(TT);
|
||||
|
||||
if (TheTriple.isOSDarwin() || TheTriple.getEnvironment() == Triple::MachO)
|
||||
return createMachOStreamer(Ctx, TAB, _OS, _Emitter, RelaxAll);
|
||||
|
||||
if (TheTriple.isOSWindows())
|
||||
return createWinCOFFStreamer(Ctx, TAB, *_Emitter, _OS, RelaxAll);
|
||||
|
||||
return createELFStreamer(Ctx, TAB, _OS, _Emitter, RelaxAll, NoExecStack);
|
||||
}
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeX86TargetMC() {
|
||||
// Register the MC asm info.
|
||||
@ -386,4 +404,22 @@ extern "C" void LLVMInitializeX86TargetMC() {
|
||||
X86_MC::createX86MCSubtargetInfo);
|
||||
TargetRegistry::RegisterMCSubtargetInfo(TheX86_64Target,
|
||||
X86_MC::createX86MCSubtargetInfo);
|
||||
|
||||
// Register the code emitter.
|
||||
TargetRegistry::RegisterCodeEmitter(TheX86_32Target,
|
||||
createX86MCCodeEmitter);
|
||||
TargetRegistry::RegisterCodeEmitter(TheX86_64Target,
|
||||
createX86MCCodeEmitter);
|
||||
|
||||
// Register the asm backend.
|
||||
TargetRegistry::RegisterAsmBackend(TheX86_32Target,
|
||||
createX86_32AsmBackend);
|
||||
TargetRegistry::RegisterAsmBackend(TheX86_64Target,
|
||||
createX86_64AsmBackend);
|
||||
|
||||
// Register the object streamer.
|
||||
TargetRegistry::RegisterObjectStreamer(TheX86_32Target,
|
||||
createMCStreamer);
|
||||
TargetRegistry::RegisterObjectStreamer(TheX86_64Target,
|
||||
createMCStreamer);
|
||||
}
|
||||
|
@ -20,10 +20,13 @@ namespace llvm {
|
||||
class MCCodeEmitter;
|
||||
class MCContext;
|
||||
class MCInstrInfo;
|
||||
class MCObjectWriter;
|
||||
class MCRegisterInfo;
|
||||
class MCSubtargetInfo;
|
||||
class Target;
|
||||
class TargetAsmBackend;
|
||||
class StringRef;
|
||||
class raw_ostream;
|
||||
|
||||
extern Target TheX86_32Target, TheX86_64Target;
|
||||
|
||||
@ -70,6 +73,14 @@ MCCodeEmitter *createX86MCCodeEmitter(const MCInstrInfo &MCII,
|
||||
const MCSubtargetInfo &STI,
|
||||
MCContext &Ctx);
|
||||
|
||||
TargetAsmBackend *createX86_32AsmBackend(const Target &, const std::string &);
|
||||
TargetAsmBackend *createX86_64AsmBackend(const Target &, const std::string &);
|
||||
|
||||
/// createX86MachObjectWriter - Construct an X86 Mach-O object writer.
|
||||
MCObjectWriter *createX86MachObjectWriter(raw_ostream &OS,
|
||||
bool Is64Bit,
|
||||
uint32_t CPUType,
|
||||
uint32_t CPUSubtype);
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
|
@ -7,14 +7,14 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "X86.h"
|
||||
#include "MCTargetDesc/X86FixupKinds.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "MCTargetDesc/X86MCTargetDesc.h"
|
||||
#include "llvm/MC/MCAssembler.h"
|
||||
#include "llvm/MC/MCAsmLayout.h"
|
||||
#include "llvm/MC/MCMachObjectWriter.h"
|
||||
#include "llvm/MC/MCSectionMachO.h"
|
||||
#include "llvm/MC/MCValue.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Object/MachOFormat.h"
|
||||
|
@ -61,9 +61,6 @@ FunctionPass *createSSEDomainFixPass();
|
||||
FunctionPass *createX86JITCodeEmitterPass(X86TargetMachine &TM,
|
||||
JITCodeEmitter &JCE);
|
||||
|
||||
TargetAsmBackend *createX86_32AsmBackend(const Target &, const std::string &);
|
||||
TargetAsmBackend *createX86_64AsmBackend(const Target &, const std::string &);
|
||||
|
||||
/// createX86EmitCodeToMemory - Returns a pass that converts a register
|
||||
/// allocated function into raw machine code in a dynamically
|
||||
/// allocated chunk of memory.
|
||||
@ -76,13 +73,6 @@ FunctionPass *createEmitX86CodeToMemory();
|
||||
///
|
||||
FunctionPass *createX86MaxStackAlignmentHeuristicPass();
|
||||
|
||||
|
||||
/// createX86MachObjectWriter - Construct an X86 Mach-O object writer.
|
||||
MCObjectWriter *createX86MachObjectWriter(raw_ostream &OS,
|
||||
bool Is64Bit,
|
||||
uint32_t CPUType,
|
||||
uint32_t CPUSubtype);
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
#endif
|
||||
|
@ -16,52 +16,15 @@
|
||||
#include "llvm/PassManager.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/Passes.h"
|
||||
#include "llvm/MC/MCCodeEmitter.h"
|
||||
#include "llvm/MC/MCStreamer.h"
|
||||
#include "llvm/Support/FormattedStream.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Target/TargetRegistry.h"
|
||||
using namespace llvm;
|
||||
|
||||
static MCStreamer *createMCStreamer(const Target &T, const std::string &TT,
|
||||
MCContext &Ctx, TargetAsmBackend &TAB,
|
||||
raw_ostream &_OS,
|
||||
MCCodeEmitter *_Emitter,
|
||||
bool RelaxAll,
|
||||
bool NoExecStack) {
|
||||
Triple TheTriple(TT);
|
||||
|
||||
if (TheTriple.isOSDarwin() || TheTriple.getEnvironment() == Triple::MachO)
|
||||
return createMachOStreamer(Ctx, TAB, _OS, _Emitter, RelaxAll);
|
||||
|
||||
if (TheTriple.isOSWindows())
|
||||
return createWinCOFFStreamer(Ctx, TAB, *_Emitter, _OS, RelaxAll);
|
||||
|
||||
return createELFStreamer(Ctx, TAB, _OS, _Emitter, RelaxAll, NoExecStack);
|
||||
}
|
||||
|
||||
extern "C" void LLVMInitializeX86Target() {
|
||||
// Register the target.
|
||||
RegisterTargetMachine<X86_32TargetMachine> X(TheX86_32Target);
|
||||
RegisterTargetMachine<X86_64TargetMachine> Y(TheX86_64Target);
|
||||
|
||||
// Register the code emitter.
|
||||
TargetRegistry::RegisterCodeEmitter(TheX86_32Target,
|
||||
createX86MCCodeEmitter);
|
||||
TargetRegistry::RegisterCodeEmitter(TheX86_64Target,
|
||||
createX86MCCodeEmitter);
|
||||
|
||||
// Register the asm backend.
|
||||
TargetRegistry::RegisterAsmBackend(TheX86_32Target,
|
||||
createX86_32AsmBackend);
|
||||
TargetRegistry::RegisterAsmBackend(TheX86_64Target,
|
||||
createX86_64AsmBackend);
|
||||
|
||||
// Register the object streamer.
|
||||
TargetRegistry::RegisterObjectStreamer(TheX86_32Target,
|
||||
createMCStreamer);
|
||||
TargetRegistry::RegisterObjectStreamer(TheX86_64Target,
|
||||
createMCStreamer);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user