From 655239cc6b7a3045df386b91b14b89e3f0adf434 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 20 Dec 2003 10:20:19 +0000 Subject: [PATCH] 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 --- lib/Target/X86/X86CodeEmitter.cpp | 3 +++ 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 d783f89fb2a..c3f1461db30 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 2e989f05336..a56e35f4d6f 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()); -- 2.34.1