<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=utf-8"><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;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
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;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.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><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Yes, that’s the only case I could think of. I do not know if this would be used often though.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Cheers,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Arnaud<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> David Blaikie [mailto:dblaikie@gmail.com] <br><b>Sent:</b> 01 August 2014 16:53<br><b>To:</b> Arnaud De Grandmaison<br><b>Cc:</b> Renato Golin; cfe-dev Developers<br><b>Subject:</b> Re: [cfe-dev] Adding lifetime begin/end to unnamed temporaries<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p><br>On Aug 1, 2014 5:55 AM, "Arnaud A. de Grandmaison" <<a href="mailto:arnaud.degrandmaison@arm.com">arnaud.degrandmaison@arm.com</a>> wrote:<br>><br>> I do not think this can apply to "C-only", as C has no way to express unnamed temporaries (language lawyers may contradict me here ;)<o:p></o:p></p><p>Write a c function that returns a large struct by value and another with that type as a parameter and call the later with the result of the former?<o:p></o:p></p><p>struct big source(void);<br>void sink(struct big);<o:p></o:p></p><p>sink(source ());<o:p></o:p></p><p>Should get you some anonymous stack usage in c that you can optimize the use of.<o:p></o:p></p><p>> On the other hand for C++, you can have lots of those unnamed temporaries.<br>><br>> A possible path, along the line of what you suggest, would be to activate lifetime markers only in the non-throwing cases (or when compiled with -fno-exceptions). The exceptional part could come later.<br>><br>> We could at least get some of the benefits now.<br>><br>> Cheers,<br>> Arnaud<br>><br>><br>> -----Original Message-----<br>> From: Renato Golin [mailto:<a href="mailto:renato.golin@linaro.org">renato.golin@linaro.org</a>]<br>> Sent: 01 August 2014 13:26<br>> To: Arnaud De Grandmaison<br>> Cc: Clang Dev<br>> Subject: Re: [cfe-dev] Adding lifetime begin/end to unnamed temporaries<br>><br>> On 31 July 2014 17:59, Arnaud A. de Grandmaison <<a href="mailto:arnaud.degrandmaison@arm.com">arnaud.degrandmaison@arm.com</a>> wrote:<br>> > By the way, my patch indeed also affected some debuginfo (some<br>> > breakpoint location if I remember correctly). I have switched<br>> > temporarily to something else, but this  patch proved to be extremely<br>> > complex --- complexity linked to what you can find in the thread about<br>> > temporary destructors. There is something going wrong in how the<br>> > scopes are handled and my patch triggers it. I am probably breaking<br>> > some undocumented or implicit assumptions.  But there is definitely a<br>> > lot of potential to reduce stack usage, and we saw that on real code.<br>><br>> This might be a bad idea, but is it possible to start with a C-only implementation, and move on with C++ later? At least we can get the general implementation right, and then only fiddle with exception handling when we need to.<br>><br>> cheers,<br>> --renato<br>><br>><br>><br>><br>> _______________________________________________<br>> cfe-dev mailing list<br>> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><o:p></o:p></p></div></body></html>