summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-02-12 23:12:47 +0000
committerChris Lattner <sabre@nondot.org>2010-02-12 23:12:47 +0000
commit741580a5bd0e497851998dd4ad5c6a220365cbb6 (patch)
tree4603174e9de05a11de579eafcb8a30549a66e590 /llvm/lib
parent2d36eb6e18791da7b1dc018ad2fcaff864aed144 (diff)
downloadbcm5719-llvm-741580a5bd0e497851998dd4ad5c6a220365cbb6.tar.gz
bcm5719-llvm-741580a5bd0e497851998dd4ad5c6a220365cbb6.zip
give MCCodeEmitters access to the current MCContext.
llvm-svn: 96038
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/LLVMTargetMachine.cpp2
-rw-r--r--llvm/lib/Target/X86/X86.h10
-rw-r--r--llvm/lib/Target/X86/X86CodeEmitter.cpp7
-rw-r--r--llvm/lib/Target/X86/X86MCCodeEmitter.cpp6
4 files changed, 16 insertions, 9 deletions
diff --git a/llvm/lib/CodeGen/LLVMTargetMachine.cpp b/llvm/lib/CodeGen/LLVMTargetMachine.cpp
index 17e579da566..0223febe967 100644
--- a/llvm/lib/CodeGen/LLVMTargetMachine.cpp
+++ b/llvm/lib/CodeGen/LLVMTargetMachine.cpp
@@ -141,7 +141,7 @@ bool LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
case CGFT_ObjectFile: {
// Create the code emitter for the target if it exists. If not, .o file
// emission fails.
- MCCodeEmitter *MCE = getTarget().createCodeEmitter(*this);
+ MCCodeEmitter *MCE = getTarget().createCodeEmitter(*this, *Context);
if (MCE == 0)
return true;
diff --git a/llvm/lib/Target/X86/X86.h b/llvm/lib/Target/X86/X86.h
index 1d17a05d5b3..411d45047cf 100644
--- a/llvm/lib/Target/X86/X86.h
+++ b/llvm/lib/Target/X86/X86.h
@@ -23,6 +23,7 @@ class X86TargetMachine;
class FunctionPass;
class MachineCodeEmitter;
class MCCodeEmitter;
+class MCContext;
class JITCodeEmitter;
class Target;
class formatted_raw_ostream;
@@ -49,9 +50,12 @@ FunctionPass *createX87FPRegKillInserterPass();
FunctionPass *createX86JITCodeEmitterPass(X86TargetMachine &TM,
JITCodeEmitter &JCE);
-MCCodeEmitter *createHeinousX86MCCodeEmitter(const Target &, TargetMachine &TM);
-MCCodeEmitter *createX86_32MCCodeEmitter(const Target &, TargetMachine &TM);
-MCCodeEmitter *createX86_64MCCodeEmitter(const Target &, TargetMachine &TM);
+MCCodeEmitter *createHeinousX86MCCodeEmitter(const Target &, TargetMachine &TM,
+ MCContext &Ctx);
+MCCodeEmitter *createX86_32MCCodeEmitter(const Target &, TargetMachine &TM,
+ MCContext &Ctx);
+MCCodeEmitter *createX86_64MCCodeEmitter(const Target &, TargetMachine &TM,
+ MCContext &Ctx);
/// createX86EmitCodeToMemory - Returns a pass that converts a register
/// allocated function into raw machine code in a dynamically
diff --git a/llvm/lib/Target/X86/X86CodeEmitter.cpp b/llvm/lib/Target/X86/X86CodeEmitter.cpp
index 02fa8ac7168..6a42240736e 100644
--- a/llvm/lib/Target/X86/X86CodeEmitter.cpp
+++ b/llvm/lib/Target/X86/X86CodeEmitter.cpp
@@ -1211,13 +1211,14 @@ static cl::opt<bool> EnableNewEncoder("enable-new-x86-encoder",
// Ok, now you can look.
MCCodeEmitter *llvm::createHeinousX86MCCodeEmitter(const Target &T,
- TargetMachine &TM) {
+ TargetMachine &TM,
+ MCContext &Ctx) {
// FIXME: Remove the heinous one when the new one works.
if (EnableNewEncoder) {
if (TM.getTargetData()->getPointerSize() == 4)
- return createX86_32MCCodeEmitter(T, TM);
- return createX86_64MCCodeEmitter(T, TM);
+ return createX86_32MCCodeEmitter(T, TM, Ctx);
+ return createX86_64MCCodeEmitter(T, TM, Ctx);
}
return new X86MCCodeEmitter(static_cast<X86TargetMachine&>(TM));
diff --git a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp
index 8df8693115d..0e3d01470db 100644
--- a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp
+++ b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp
@@ -120,12 +120,14 @@ public:
MCCodeEmitter *llvm::createX86_32MCCodeEmitter(const Target &,
- TargetMachine &TM) {
+ TargetMachine &TM,
+ MCContext &Ctx) {
return new X86MCCodeEmitter(TM, false);
}
MCCodeEmitter *llvm::createX86_64MCCodeEmitter(const Target &,
- TargetMachine &TM) {
+ TargetMachine &TM,
+ MCContext &Ctx) {
return new X86MCCodeEmitter(TM, true);
}
OpenPOWER on IntegriCloud