mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-05 01:30:18 +00:00
Passes prior to instructon selection are now split into separate configurable stages. Header dependencies are simplified. The bulk of this diff is simply removal of the silly DisableVerify flags. Sorry for the target header churn. Attempting to stabilize them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149754 91177308-0d34-0410-b5e6-96231b3b80d8
66 lines
2.1 KiB
C++
66 lines
2.1 KiB
C++
//===-- XCoreTargetMachine.cpp - Define TargetMachine for XCore -----------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "XCoreTargetMachine.h"
|
|
#include "XCore.h"
|
|
#include "llvm/Module.h"
|
|
#include "llvm/PassManager.h"
|
|
#include "llvm/CodeGen/Passes.h"
|
|
#include "llvm/Support/TargetRegistry.h"
|
|
using namespace llvm;
|
|
|
|
/// XCoreTargetMachine ctor - Create an ILP32 architecture model
|
|
///
|
|
XCoreTargetMachine::XCoreTargetMachine(const Target &T, StringRef TT,
|
|
StringRef CPU, StringRef FS,
|
|
const TargetOptions &Options,
|
|
Reloc::Model RM, CodeModel::Model CM,
|
|
CodeGenOpt::Level OL)
|
|
: LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL),
|
|
Subtarget(TT, CPU, FS),
|
|
DataLayout("e-p:32:32:32-a0:0:32-f32:32:32-f64:32:32-i1:8:32-i8:8:32-"
|
|
"i16:16:32-i32:32:32-i64:32:32-n32"),
|
|
InstrInfo(),
|
|
FrameLowering(Subtarget),
|
|
TLInfo(*this),
|
|
TSInfo(*this) {
|
|
}
|
|
|
|
namespace {
|
|
/// XCore Code Generator Pass Configuration Options.
|
|
class XCorePassConfig : public TargetPassConfig {
|
|
public:
|
|
XCorePassConfig(XCoreTargetMachine *TM, PassManagerBase &PM)
|
|
: TargetPassConfig(TM, PM) {}
|
|
|
|
XCoreTargetMachine &getXCoreTargetMachine() const {
|
|
return getTM<XCoreTargetMachine>();
|
|
}
|
|
|
|
virtual bool addInstSelector();
|
|
};
|
|
} // namespace
|
|
|
|
TargetPassConfig *XCoreTargetMachine::createPassConfig(PassManagerBase &PM) {
|
|
return new XCorePassConfig(this, PM);
|
|
}
|
|
|
|
bool XCorePassConfig::addInstSelector() {
|
|
PM.add(createXCoreISelDag(getXCoreTargetMachine(), getOptLevel()));
|
|
return false;
|
|
}
|
|
|
|
// Force static initialization.
|
|
extern "C" void LLVMInitializeXCoreTarget() {
|
|
RegisterTargetMachine<XCoreTargetMachine> X(TheXCoreTarget);
|
|
}
|