<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>[Sorry for the cross-posting, but this future change in clang can affect llvm optimization passes]<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Language frontends can insert lifetime.start / lifetime.end markers for objects allocated on the stack, providing the optimization passes in LLVM with lifetime information so that they can share stack slots and reduce stack usage of the generated code. Today, those lifetime markers are only inserted for objects > 32 bytes. This threshold was set to prevent  impacting compile time. Lifetime markers have been in use for a long time now, and some passes got fixed to deal gracefully with them.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I intend to commit soon a patch removing this threshold, unless someone objects or raise concerns. Removing the threshold can only improve stack size usage of the generated code, but there is a risk that some specific code base trigger some corner case bugs, thus this heads-up.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I checked that compile time was not impacted by building llvm+clang+lldb with a clang with various thresholds, and here are the results (user time in seconds for a build from scratch, averaged over 5 builds). Note that the reported  threshold is inclusive: 33 (the current threshold) means all object whose size >= 33 bytes will be marked for example.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=197 style='width:148.0pt;margin-left:-.75pt;border-collapse:collapse'><tr style='height:15.0pt'><td width=64 nowrap valign=bottom style='width:48.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>Threshold<o:p></o:p></p></td><td width=63 nowrap valign=bottom style='width:47.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>Average<o:p></o:p></p></td><td width=71 nowrap valign=bottom style='width:53.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>Variance<o:p></o:p></p></td></tr><tr style='height:15.0pt'><td width=64 nowrap valign=bottom style='width:48.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>33<o:p></o:p></p></td><td width=63 nowrap valign=bottom style='width:47.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>4652.67<o:p></o:p></p></td><td width=71 nowrap valign=bottom style='width:53.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>4.51<o:p></o:p></p></td></tr><tr style='height:15.0pt'><td width=64 nowrap valign=bottom style='width:48.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>32<o:p></o:p></p></td><td width=63 nowrap valign=bottom style='width:47.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>4677.02<o:p></o:p></p></td><td width=71 nowrap valign=bottom style='width:53.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>2.71<o:p></o:p></p></td></tr><tr style='height:15.0pt'><td width=64 nowrap valign=bottom style='width:48.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>16<o:p></o:p></p></td><td width=63 nowrap valign=bottom style='width:47.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>4681.50<o:p></o:p></p></td><td width=71 nowrap valign=bottom style='width:53.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>11.06<o:p></o:p></p></td></tr><tr style='height:15.0pt'><td width=64 nowrap valign=bottom style='width:48.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>8<o:p></o:p></p></td><td width=63 nowrap valign=bottom style='width:47.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>4660.23<o:p></o:p></p></td><td width=71 nowrap valign=bottom style='width:53.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>12.47<o:p></o:p></p></td></tr><tr style='height:15.0pt'><td width=64 nowrap valign=bottom style='width:48.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>0<o:p></o:p></p></td><td width=63 nowrap valign=bottom style='width:47.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>4667.47<o:p></o:p></p></td><td width=71 nowrap valign=bottom style='width:53.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:15.0pt'><p class=MsoNormal>8.63<o:p></o:p></p></td></tr></table><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>There are some minor fluctuations that I cannot explain, but we just have no compromise to make there: always insert the lifetime markers .<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks for your attention,<o:p></o:p></p><p class=MsoNormal><span style='mso-fareast-language:EN-GB'>--<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-GB'>Arnaud A. de Grandmaison<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>