[llvm-dev] DCE in the presence of control flow.

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Jan 28 22:09:37 PST 2016


----- Original Message -----

> From: "David Callahan via llvm-dev" <llvm-dev at lists.llvm.org>
> To: "Daniel Berlin" <dberlin at dberlin.org>, "LLVM Dev Mailing list"
> <llvm-dev at lists.llvm.org>
> Sent: Thursday, January 28, 2016 11:35:49 PM
> Subject: Re: [llvm-dev] DCE in the presence of control flow.

> Thanks
> Also I found that some cases are also caught by a specialized routine
> to remove dead loops which is missing the case I noticed.
> odavd

> From: Daniel Berlin < dberlin at dberlin.org >
> Date: Thursday, January 28, 2016 at 8:45 PM
> To: David Callahan < dcallahan at fb.com >, LLVM Dev Mailing list <
> llvm-dev at lists.llvm.org >
> Subject: Re: [llvm-dev] DCE in the presence of control flow.

> The post dominators computation costs more on llvm than GCC because
> of how the respective cfgs work under the covers. Even for GCC, when
> we implemented cd-dce, it only catches 1-2% more cases. It's not
> really worth the cost in llvm unless postdom comes free
A 1-2% reduction in code size seems like it might well be worth a post-dom calculation. Also, what exactly is the algorithm using post-dom info? 

I suppose that we're looking for cases where we have a CFG diamond with one having only dead instructions, and loops with all dead instructions, etc. 

Thanks again, 
Hal 

> On Wed, Jan 27, 2016, 1:56 PM David Callahan via llvm-dev <
> llvm-dev at lists.llvm.org > wrote:

> > I have been looking at some internal codes looking for differences
> > between Clang (specifically 3.7.1) and gcc (typically 4.8.1 but
> > sometimes later).
> 

> > One area where I bumped into was dead code elimination in the
> > presence of complex control flow. I note that the “aggressive dead
> > code elimination” (ADCE.cpp) treats all branch operations as live (
> > isa<TerminatorInst>(I)). Doing more requires some approximation to
> > control dependence.
> 

> > I note SimplifyCFG indirectly handles some simple cases. It will
> > speculate the contents of a basic block into a predecessor but this
> > is insufficient for more complex structures. This probably
> > cherry-picks the most common cases by frequency.
> 

> > Have their been prior attempts strengthen dead code elimination
> > w.r.t. control flow? If so, any guidance on what went wrong?
> 

> > Thanks
> 
> > David
> 
> > _______________________________________________
> 
> > 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

-- 

Hal Finkel 
Assistant Computational Scientist 
Leadership Computing Facility 
Argonne National Laboratory 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160129/0f1bb838/attachment.html>


More information about the llvm-dev mailing list