diff options
author | Chris Lattner <sabre@nondot.org> | 2003-12-20 10:20:19 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-12-20 10:20:19 +0000 |
commit | 655239cc6b7a3045df386b91b14b89e3f0adf434 (patch) | |
tree | d44a209b24506f884c7720144206e80e6c201e26 | |
parent | 028565b14b9dcf7b615b6617c2df8618e9b673ef (diff) |
Finally, _actually delete the machine code_ for a function, after it has
been emitted. Also, since the FPK pass is causing memory access violations,
disable it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10559 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86CodeEmitter.cpp | 3 | ||||
-rw-r--r-- | lib/Target/X86/X86TargetMachine.cpp | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp index d783f89fb2..c3f1461db3 100644 --- a/lib/Target/X86/X86CodeEmitter.cpp +++ b/lib/Target/X86/X86CodeEmitter.cpp @@ -19,6 +19,7 @@ #include "llvm/CodeGen/MachineCodeEmitter.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstr.h" +#include "llvm/CodeGen/Passes.h" #include "llvm/Function.h" #include "Support/Debug.h" #include "Support/Statistic.h" @@ -211,6 +212,8 @@ namespace { bool X86TargetMachine::addPassesToEmitMachineCode(FunctionPassManager &PM, MachineCodeEmitter &MCE) { PM.add(new Emitter(MCE)); + // Delete machine code for this function + PM.add(createMachineCodeDeleter()); return false; } diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp index 2e989f0533..a56e35f4d6 100644 --- a/lib/Target/X86/X86TargetMachine.cpp +++ b/lib/Target/X86/X86TargetMachine.cpp @@ -79,7 +79,7 @@ bool X86TargetMachine::addPassesToEmitAssembly(PassManager &PM, // kill floating point registers at the end of basic blocks. this is // done because the floating point register stackifier cannot handle // floating point regs that are live across basic blocks. - PM.add(createX86FloatingPointKillerPass()); + //PM.add(createX86FloatingPointKillerPass()); // Perform register allocation to convert to a concrete x86 representation PM.add(createRegisterAllocator()); @@ -101,6 +101,10 @@ bool X86TargetMachine::addPassesToEmitAssembly(PassManager &PM, PM.add(createX86CodePrinterPass(std::cerr, *this)); PM.add(createX86CodePrinterPass(Out, *this)); + + // Delete machine code for this function + PM.add(createMachineCodeDeleter()); + return false; // success! } @@ -137,7 +141,7 @@ void X86JITInfo::addPassesToJITCompile(FunctionPassManager &PM) { // kill floating point registers at the end of basic blocks. this is // done because the floating point register stackifier cannot handle // floating point regs that are live across basic blocks. - PM.add(createX86FloatingPointKillerPass()); + //PM.add(createX86FloatingPointKillerPass()); // Perform register allocation to convert to a concrete x86 representation PM.add(createRegisterAllocator()); |