[llvm-dev] status of IPO/IPCP?
Sean Silva via llvm-dev
llvm-dev at lists.llvm.org
Wed May 4 16:19:28 PDT 2016
On Tue, May 3, 2016 at 11:01 PM, Justin Bogner <mail at justinbogner.com>
wrote:
> Sean Silva via llvm-dev <llvm-dev at lists.llvm.org> writes:
> > No tests fail with the patch below, so I would say it's pretty useless.
> It
> > seems that the C bindings are the only user but we can probably just
> have them
> > return IPSCCP instead.
>
> I don't necessarily think your conclusion is wrong, but the patch isn't
> proving what you think it's proving. In fact, the below passes all tests
> as well. When you call passes through `opt` they don't end up calling
> through the createXYZPass path.
>
Ah, interesting! Thanks for catching this!
-- Sean Silva
>
> diff --git a/lib/Transforms/IPO/IPConstantPropagation.cpp
> b/lib/Transforms/IPO/IPConstantPropagation.cpp
> index b3ee499..8d70b98 100644
> --- a/lib/Transforms/IPO/IPConstantPropagation.cpp
> +++ b/lib/Transforms/IPO/IPConstantPropagation.cpp
> @@ -253,7 +253,9 @@ char IPCP::ID = 0;
> INITIALIZE_PASS(IPCP, "ipconstprop",
> "Interprocedural constant propagation", false, false)
>
> -ModulePass *llvm::createIPConstantPropagationPass() { return new IPCP(); }
> +ModulePass *llvm::createIPConstantPropagationPass() {
> + llvm_unreachable("fnord");
> +}
>
> bool IPCP::runOnModule(Module &M) {
> if (skipModule(M))
>
> > Any idea why this wasn't removed when IPSCCP was introduced? Probably
> worth
> > understanding that before ripping it out, but in the current state of
> things I
> > don't think removing it will be problematic.
> >
> > diff --git a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp
> b/llvm/lib/
> > Transforms/IPO/IPConstantPropagation.cpp
> > index a1533b3..24aea5c 100644
> > --- a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp
> > +++ b/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp
> > @@ -51,7 +51,9 @@ char IPCP::ID = 0;
> > INITIALIZE_PASS(IPCP, "ipconstprop",
> > "Interprocedural constant propagation", false, false)
> >
> > -ModulePass *llvm::createIPConstantPropagationPass() { return new
> IPCP(); }
> > +ModulePass *llvm::createIPConstantPropagationPass() {
> > + return createIPSCCPPass();
> > +}
> >
> > bool IPCP::runOnModule(Module &M) {
> > if (skipModule(M))
> >
> > -- Sean Silva
> >
> > On Tue, May 3, 2016 at 3:06 PM, Davide Italiano via llvm-dev <
> > llvm-dev at lists.llvm.org> wrote:
> >
> > The pass is pretty rudimental (as the comment at the top of the file
> > hints), and it seems LLVM already has IPSCCP (which should do a
> better
> > job at interprocedural constant propagation).
> > I'm also not entirely sure it's used anywhere.
> > Is there any reason to keep it around?
> >
> > Thanks,
> >
> > --
> > Davide
> >
> > "There are no solved problems; there are only problems that are more
> > or less solved" -- Henri Poincare
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160504/65e1301b/attachment.html>
More information about the llvm-dev
mailing list