/// X86TargetMachine ctor - Create an ILP32 architecture model
///
-X86TargetMachine::X86TargetMachine(const Module &M, const std::string &FS, bool is64Bit)
+X86TargetMachine::X86TargetMachine(const Module &M, const std::string &FS,
+ bool is64Bit)
: Subtarget(M, FS, is64Bit),
DataLayout(Subtarget.is64Bit() ?
- std::string("e-p:64:64-d:32-l:32") :
- std::string("e-p:32:32-d:32-l:32")),
+ std::string("e-p:64:64-f64:32:64-i64:32:64") :
+ std::string("e-p:32:32-f64:32:64-i64:32:64")),
FrameInfo(TargetFrameInfo::StackGrowsDown,
Subtarget.getStackAlignment(), Subtarget.is64Bit() ? -8 : -4),
InstrInfo(*this), JITInfo(*this), TLInfo(*this) {
setCodeModel(CodeModel::Small);
}
- if (getRelocationModel() == Reloc::PIC_) {
- if (Subtarget.isTargetDarwin()) {
- if (Subtarget.is64Bit())
- Subtarget.setPICStyle(PICStyle::RIPRel);
- else
- Subtarget.setPICStyle(PICStyle::Stub);
- } else if (Subtarget.isTargetELF())
- Subtarget.setPICStyle(PICStyle::GOT);
+ if (Subtarget.isTargetCygMing())
+ Subtarget.setPICStyle(PICStyle::WinPIC);
+ else if (Subtarget.isTargetDarwin())
+ if (Subtarget.is64Bit())
+ Subtarget.setPICStyle(PICStyle::RIPRel);
else
- assert(0 && "Don't know how to generate PIC code for this target!");
- } else if (getRelocationModel() == Reloc::DynamicNoPIC) {
- if (Subtarget.isTargetDarwin())
Subtarget.setPICStyle(PICStyle::Stub);
- else if (Subtarget.isTargetCygMing())
- Subtarget.setPICStyle(PICStyle::WinPIC);
+ else if (Subtarget.isTargetELF())
+ if (Subtarget.is64Bit())
+ Subtarget.setPICStyle(PICStyle::RIPRel);
else
- assert(0 && "Don't know how to generate PIC code for this target!");
- }
+ Subtarget.setPICStyle(PICStyle::GOT);
}
//===----------------------------------------------------------------------===//
return false;
}
-bool X86TargetMachine::addObjectWriter(FunctionPassManager &PM, bool Fast,
- std::ostream &Out) {
- if (Subtarget.isTargetELF()) {
- addX86ELFObjectWriterPass(PM, Out, *this);
- return false;
- }
- return true;
-}
-
bool X86TargetMachine::addCodeEmitter(FunctionPassManager &PM, bool Fast,
MachineCodeEmitter &MCE) {
// FIXME: Move this to TargetJITInfo!
PM.add(createX86CodeEmitterPass(*this, MCE));
return false;
}
+
+bool X86TargetMachine::addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
+ MachineCodeEmitter &MCE) {
+ PM.add(createX86CodeEmitterPass(*this, MCE));
+ return false;
+}