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

Daniel Berlin via llvm-dev llvm-dev at lists.llvm.org
Thu Jan 28 20:45:19 PST 2016


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

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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160129/d1446639/attachment.html>


More information about the llvm-dev mailing list