#include "llvm/Target/TargetMachineRegistry.h"
using namespace llvm;
+/// MipsTargetMachineModule - Note that this is used on hosts that
+/// cannot link in a library unless there are references into the
+/// library. In particular, it seems that it is not possible to get
+/// things to work on Win32 without this. Though it is unused, do not
+/// remove it.
+extern "C" int MipsTargetMachineModule;
+int MipsTargetMachineModule = 0;
+
// Register the target.
-static RegisterTarget<MipsTargetMachine> X("mips", " Mips");
-static RegisterTarget<MipselTargetMachine> Y("mipsel", " Mipsel");
+static RegisterTarget<MipsTargetMachine> X("mips", "Mips");
+static RegisterTarget<MipselTargetMachine> Y("mipsel", "Mipsel");
const TargetAsmInfo *MipsTargetMachine::
createTargetAsmInfo() const
// The stack is always 8 byte aligned
// On function prologue, the stack is created by decrementing
// its pointer. Once decremented, all references are done with positive
-// offset from the stack/frame pointer, so StackGrowsUp is used.
+// offset from the stack/frame pointer, using StackGrowsUp enables
+// an easier handling.
// Using CodeModel::Large enables different CALL behavior.
MipsTargetMachine::
MipsTargetMachine(const Module &M, const std::string &FS, bool isLittle=false):
TLInfo(*this)
{
// Abicall enables PIC by default
- if (Subtarget.hasABICall() && (getRelocationModel() != Reloc::Static))
+ if (Subtarget.hasABICall())
setRelocationModel(Reloc::PIC_);
// TODO: create an option to enable long calls, like -mlong-calls,
// true if AssemblyEmitter is supported
bool MipsTargetMachine::
addAssemblyEmitter(PassManagerBase &PM, bool Fast,
- std::ostream &Out)
+ raw_ostream &Out)
{
// Output assembly language.
- PM.add(createMipsCodePrinterPass(Out, *this));
+ PM.add(createMipsCodePrinterPass(Out, *this, Fast));
return false;
}