<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;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        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:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Arial","sans-serif";
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Verdana","sans-serif";
        color:windowtext;
        font-weight:normal;
        font-style:normal;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
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-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Verdana","sans-serif";color:black">I believe this is exactly the purpose of the -f[no-]asynchronous-unwind-tables option, which clang at least accepts. This is how gcc documents it:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black">-fasynchronous-unwind-tables</span><span style="font-size:13.5pt;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:1.0in"><a name="index-fasynchronous-unwind-tables-2796"></a><span style="font-size:13.5pt;color:black">Generate unwind table in DWARF 2 format, if supported by target machine. The table is exact at each instruction boundary,
 so it can be used for stack unwinding from asynchronous events (such as debugger or garbage collector). <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Verdana","sans-serif"">- Dave<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Smith, Kevin B
<br>
<b>Sent:</b> Wednesday, November 04, 2015 11:19 AM<br>
<b>To:</b> Kuperstein, Michael M; Rafael Espíndola; rnk@google.com; friss@apple.com; Kreitzer, David L<br>
<b>Cc:</b> llvm-commits<br>
<b>Subject:</b> RE: [llvm] r251904 - [X86] Generate .cfi_adjust_cfa_offset correctly when pushing arguments<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#1F497D">+1 to Rafael’s comment.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Kuperstein, Michael M
<br>
<b>Sent:</b> Wednesday, November 04, 2015 7:32 AM<br>
<b>To:</b> Rafael Espíndola; <a href="mailto:rnk@google.com">rnk@google.com</a>; <a href="mailto:friss@apple.com">
friss@apple.com</a>; Kreitzer, David L; Smith, Kevin B<br>
<b>Cc:</b> llvm-commits<br>
<b>Subject:</b> RE: [llvm] r251904 - [X86] Generate .cfi_adjust_cfa_offset correctly when pushing arguments<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Adding people who participated in the original review.<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"></a><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Rafael Espíndola [<a href="mailto:rafael.espindola@gmail.com">mailto:rafael.espindola@gmail.com</a>]
<br>
<b>Sent:</b> Wednesday, November 04, 2015 14:46<br>
<b>To:</b> Kuperstein, Michael M<br>
<b>Cc:</b> llvm-commits<br>
<b>Subject:</b> RE: [llvm] r251904 - [X86] Generate .cfi_adjust_cfa_offset correctly when pushing arguments<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p>I would personally prefer to be precise by default and have a command line option to switch it of<span style="color:#1F497D">f<o:p></o:p></span></p>
<p>Cheers, <br>
Rafael <o:p></o:p></p>
<div>
<p class="MsoNormal" style="line-height:115%">On Nov 3, 2015 12:13 PM, "Kuperstein, Michael M" <<a href="mailto:michael.m.kuperstein@intel.com">michael.m.kuperstein@intel.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal" style="line-height:115%">Sorry, I wasn't clear - when I said "always", I meant both -O2 and -Os -fomit-frame-pointers.<br>
But "-Os -fomit-frame-pointers" isn't a configuration that's normally used, so I'm not entirely sure it was a conscious decision.<br>
<br>
Anyway, if there's consensus that we need to always be precise, the code is already in place, we just need to flip the switch - but I'm afraid of the size impact.<br>
<br>
-----Original Message-----<br>
From: Rafael Espíndola [mailto:<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>]<br>
Sent: Tuesday, November 03, 2015 18:09<br>
To: Kuperstein, Michael M<br>
Cc: llvm-commits<br>
Subject: Re: [llvm] r251904 - [X86] Generate .cfi_adjust_cfa_offset correctly when pushing arguments<br>
<br>
On 3 November 2015 at 10:55, Kuperstein, Michael M <<a href="mailto:michael.m.kuperstein@intel.com">michael.m.kuperstein@intel.com</a>> wrote:<br>
> GCC is always precise, but that seems unnecessary when we only care about performing unwinding for synchronous EH (since in this case, we only need to be right at call sites), and inflates the module size.<br>
><br>
> It's actually a bit hard to compare apples-to-apples here, since for -O2, there's no definitely harm in emitting extra CFI, but clang doesn't use pushes, and for -Os, GCC defaults to -no-omit-frame-pointer, so the issue does not arise.<br>
<br>
-Os -fomit-frame-pointers?<br>
<br>
I think it is incorrect to say that we don't care about asynchronous unwinding (not exceptions). The .eh_frame is part of the ABI and any tool wanting to unwind can depend on it being precise.<br>
<br>
Cheers,<br>
Rafael<br>
---------------------------------------------------------------------<br>
Intel Israel (74) Limited<br>
<br>
This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.<o:p></o:p></p>
</div>
</div>
</body>
</html>