[llvm-dev] DCE in the presence of control flow.
David Callahan via llvm-dev
llvm-dev at lists.llvm.org
Wed Jan 27 13:56:33 PST 2016
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160127/d4dee7cb/attachment.html>
More information about the llvm-dev
mailing list