[LLVMdev] Passes propose passes

Hal Finkel hfinkel at anl.gov
Fri Dec 2 13:15:11 PST 2011


On Fri, 2011-12-02 at 12:51 -0800, Eli Friedman wrote:
> On Fri, Dec 2, 2011 at 11:56 AM, Carl-Philip Hänsch
> <cphaensch at googlemail.com> wrote:
> > While trying to find a solution for this bug
> > http://llvm.org/bugs/show_bug.cgi?id=11235 ,
> > I came to the conclusion that the following things can happen while
> > optimizing:
> >  - after gvn, I get new constants which are inserted into br and
> > add/sum/..., so there should be at least one more jump-threading and/or
> > instsimplify
> >  - after instsimplify, I get new constants which are inserted into br, so
> > there should be one more jump-threading pass
> >  - after jump-threading, new bigger blocks occur with redundant loads which
> > need an other gvn pass
> >
> > At least for -O3 we will need those optimizations.
> > Is there a kind of "I need at least one more $XYZ pass" call that can be
> > invoked from a Pass?
> >
> > So my suggestion to implement in LLVM is:
> >  - Detect where exactly constants are inserted
> >  - Detect which pass is responsible to continue folding it
> >  - Insert that pass if allowed and if it is not in the queue by a
> > ProposePass function
> >
> > ProposePass should decide wether it's worth to further constant fold the
> > block by running the proposed pass. Once accepted, the pass should be
> > inserted into the pass queue at a position where it is most effective.
> >
> > What do you think about that idea? How much would be the effort of
> > implementing it? Does it fit the layering design?
> 
> One thing that this proposal doesn't really address is that running
> GVN is expensive; on common testcases, it takes much more time to run
> than any other pass.  We really don't want to be inserting extra runs
> of GVN into the pass pipeline.

I also think that this is a good idea. To Eli's point, it would probably
be a good idea to be able to tag individual blocks and functions as
needing additional work instead of just having an expensive pass go over
everything again.

 -Hal

> 
> -Eli
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-- 
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory




More information about the llvm-dev mailing list