projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Hookup ELF support for X86.
[oota-llvm.git]
/
lib
/
Target
/
X86
/
X86TargetMachine.cpp
diff --git
a/lib/Target/X86/X86TargetMachine.cpp
b/lib/Target/X86/X86TargetMachine.cpp
index a0d7cf661936e27b16750bbed8e67aa8afaea6df..3c8e7f1d339d47c18713938f282542cf07cb72e8 100644
(file)
--- a/
lib/Target/X86/X86TargetMachine.cpp
+++ b/
lib/Target/X86/X86TargetMachine.cpp
@@
-46,8
+46,15
@@
static MCStreamer *createMCStreamer(const Target &T, const std::string &TT,
bool RelaxAll) {
Triple TheTriple(TT);
switch (TheTriple.getOS()) {
bool RelaxAll) {
Triple TheTriple(TT);
switch (TheTriple.getOS()) {
-
default
:
+
case Triple::Darwin
:
return createMachOStreamer(Ctx, TAB, _OS, _Emitter, RelaxAll);
return createMachOStreamer(Ctx, TAB, _OS, _Emitter, RelaxAll);
+ case Triple::MinGW32:
+ case Triple::MinGW64:
+ case Triple::Cygwin:
+ case Triple::Win32:
+ return createWinCOFFStreamer(Ctx, TAB, *_Emitter, _OS, RelaxAll);
+ default:
+ return createELFStreamer(Ctx, TAB, _OS, _Emitter, RelaxAll);
}
}
}
}
@@
-173,14
+180,15
@@
bool X86TargetMachine::addInstSelector(PassManagerBase &PM,
// Install an instruction selector.
PM.add(createX86ISelDag(*this, OptLevel));
// Install an instruction selector.
PM.add(createX86ISelDag(*this, OptLevel));
+ // For 32-bit, prepend instructions to set the "global base reg" for PIC.
+ if (!Subtarget.is64Bit())
+ PM.add(createGlobalBaseRegPass());
+
return false;
}
bool X86TargetMachine::addPreRegAlloc(PassManagerBase &PM,
CodeGenOpt::Level OptLevel) {
return false;
}
bool X86TargetMachine::addPreRegAlloc(PassManagerBase &PM,
CodeGenOpt::Level OptLevel) {
- // Install a pass to insert x87 FP_REG_KILL instructions, as needed.
- PM.add(createX87FPRegKillInserterPass());
-
PM.add(createX86MaxStackAlignmentHeuristicPass());
return false; // -print-machineinstr shouldn't print after this.
}
PM.add(createX86MaxStackAlignmentHeuristicPass());
return false; // -print-machineinstr shouldn't print after this.
}