fix leaking of the module provider

llvm-svn: 58127
This commit is contained in:
Nuno Lopes 2008-10-24 22:51:00 +00:00
parent bb913f2369
commit a39a4cec35
1 changed files with 5 additions and 3 deletions

View File

@ -52,6 +52,7 @@ namespace {
llvm::TargetData *TheTargetData;
llvm::raw_ostream *AsmOutStream;
mutable llvm::ModuleProvider *ModuleProvider;
mutable FunctionPassManager *CodeGenPasses;
mutable PassManager *PerModulePasses;
mutable FunctionPassManager *PerFunctionPasses;
@ -81,7 +82,7 @@ namespace {
InputFile(infile),
OutputFile(outfile),
Gen(CreateLLVMCodeGen(Diags, Features, InputFile, GenerateDebugInfo)),
TheModule(0), TheTargetData(0), AsmOutStream(0),
TheModule(0), TheTargetData(0), AsmOutStream(0), ModuleProvider(0),
CodeGenPasses(0), PerModulePasses(0), PerFunctionPasses(0) {}
~BackendConsumer() {
@ -91,6 +92,7 @@ namespace {
delete AsmOutStream;
delete TheTargetData;
delete TheModule;
delete ModuleProvider;
delete CodeGenPasses;
delete PerModulePasses;
delete PerFunctionPasses;
@ -120,8 +122,8 @@ namespace {
FunctionPassManager *BackendConsumer::getCodeGenPasses() const {
if (!CodeGenPasses) {
CodeGenPasses =
new FunctionPassManager(new ExistingModuleProvider(TheModule));
ModuleProvider = new ExistingModuleProvider(TheModule);
CodeGenPasses = new FunctionPassManager(ModuleProvider);
CodeGenPasses->add(new TargetData(*TheTargetData));
}