[llvm] r176977 - Make LTO codegen use a PassManager, rather than a FunctionPassManager, for the
Lang Hames
lhames at gmail.com
Wed Mar 13 14:30:14 PDT 2013
That's the plan - I'm looking at that at the moment.
- Lang.
On Wed, Mar 13, 2013 at 2:29 PM, David Blaikie <dblaikie at gmail.com> wrote:
> On Wed, Mar 13, 2013 at 2:18 PM, Lang Hames <lhames at gmail.com> wrote:
> > Author: lhames
> > Date: Wed Mar 13 16:18:46 2013
> > New Revision: 176977
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=176977&view=rev
> > Log:
> > Make LTO codegen use a PassManager, rather than a FunctionPassManager,
> for the
> > codegen passes. This brings it in to line with clang and llc's codegen
> setup,
> > and tidies up the code.
> >
> > If I understand correctly, adding ModulePasses to a FunctionPassManager
> is
> > bogus. It only seems to explode if an added ModulePass depends on a
> > FunctionPass though, which might be why this code has survived so long.
>
> Worth putting in some asserts (or whatever else) to make this fail faster?
>
> >
> > Fixes <rdar://problem/13386816>.
> >
> >
> > Modified:
> > llvm/trunk/tools/lto/LTOCodeGenerator.cpp
> >
> > Modified: llvm/trunk/tools/lto/LTOCodeGenerator.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/LTOCodeGenerator.cpp?rev=176977&r1=176976&r2=176977&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/tools/lto/LTOCodeGenerator.cpp (original)
> > +++ llvm/trunk/tools/lto/LTOCodeGenerator.cpp Wed Mar 13 16:18:46 2013
> > @@ -390,14 +390,14 @@ bool LTOCodeGenerator::generateObjectFil
> > // Make sure everything is still good.
> > passes.add(createVerifierPass());
> >
> > - FunctionPassManager *codeGenPasses = new
> FunctionPassManager(mergedModule);
> > + PassManager codeGenPasses;
> >
> > - codeGenPasses->add(new DataLayout(*_target->getDataLayout()));
> > - _target->addAnalysisPasses(*codeGenPasses);
> > + codeGenPasses.add(new DataLayout(*_target->getDataLayout()));
> > + _target->addAnalysisPasses(codeGenPasses);
> >
> > formatted_raw_ostream Out(out);
> >
> > - if (_target->addPassesToEmitFile(*codeGenPasses, Out,
> > + if (_target->addPassesToEmitFile(codeGenPasses, Out,
> > TargetMachine::CGFT_ObjectFile)) {
> > errMsg = "target file type not supported";
> > return true;
> > @@ -407,15 +407,7 @@ bool LTOCodeGenerator::generateObjectFil
> > passes.run(*mergedModule);
> >
> > // Run the code generator, and write assembly file
> > - codeGenPasses->doInitialization();
> > -
> > - for (Module::iterator
> > - it = mergedModule->begin(), e = mergedModule->end(); it != e;
> ++it)
> > - if (!it->isDeclaration())
> > - codeGenPasses->run(*it);
> > -
> > - codeGenPasses->doFinalization();
> > - delete codeGenPasses;
> > + codeGenPasses.run(*mergedModule);
> >
> > return false; // success
> > }
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130313/65503459/attachment.html>
More information about the llvm-commits
mailing list