<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div>
<div></div>
<div><i><font style="color:#333333">Sent from my Verizon Wireless 4G LTE DROID</font></i></div>
<div><br>
</div>
<div>On Dec 18, 2016 2:56 PM, via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:</div>
<div>></div>
<div>></div>
<div>> > On Dec 17, 2016, at 1:35 PM, Davide Italiano via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:</div>
<div>> > </div>
<div>> > First of all, sorry for the long mail.</div>
<div>> > Inspired by the excellent analysis Rui did for lld, I decided to do</div>
<div>> > the same for llvm.</div>
<div>> > I'm personally very interested in build-time for LTO configuration,</div>
<div>> > with particular attention to the time spent in the optimizer.</div>
<div>></div>
<div>> From our own offline regression testing, one of the biggest culprits in our experience is Instcombine’s known bits calculation. A number of new known bits checks have been added in the past few years (e.g. to infer nuw, nsw, etc on various instructions)
 and the cost adds up quite a lot, because *the cost is paid even if Instcombine does nothing*, since it’s a significant cost on visiting every relevant instruction.</div>
<div><br>
</div>
<div>FWIW, I've started working on a patch to add a cache for InstCombine's (ValueTracking's) known-bits calculation. I hope to have it ready for posting soon.</div>
<div><br>
</div>
<div>-Hal</div>
<div><br>
</div>
<div>></div>
<div>> This IME is one of the greatest ways performance gets lost: a tiny bit at a time, whenever a new combine/transformation is added that is *expensive to test for*. The test has to be done every time no matter what (and instcombine gets called a lot!),
 so the cost adds up.</div>
<div>></div>
<div>> —escha</div>
<div>> _______________________________________________</div>
<div>> LLVM Developers mailing list</div>
<div>> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></div>
<div>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></div>
</div>
</body>
</html>