<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 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@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:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.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" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi John,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Let me be clarify that ICC-compatibility isn’t my goal here. We can do that out-of-tree for Intel compilers based on LLVM.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My motivation is a problem I’m working on with the LLVM test suite. The Polybench benchmarks in the test are currently attempting to use ‘#pragma STDC FP_CONTRACT OFF’ to create a value-safe kernel whose results can be compared against
 an otherwise identical kernel that is compiled with whatever options the test suite is configured to use. This strategy fails if the test suite is configured to compile with ‘-ffp-contract=fast’. That’s the problem I’m trying to solve by having clang respect
 the pragma.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">See <a href="https://reviews.llvm.org/D25346">https://reviews.llvm.org/D25346</a>,
<a href="https://reviews.llvm.org/D102861">https://reviews.llvm.org/D102861</a>, and
<a href="https://reviews.llvm.org/D104935">https://reviews.llvm.org/D104935</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Andy<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> John McCall <rjmccall@apple.com> <br>
<b>Sent:</b> Friday, June 25, 2021 5:44 PM<br>
<b>To:</b> Kaylor, Andrew <andrew.kaylor@intel.com><br>
<b>Cc:</b> llvm-dev@lists.llvm.org; cfe-dev@lists.llvm.org; Yaxun Liu <yaxun.liu@amd.com>; Steve (Numerics) Canon <scanon@apple.com>; Keane, Erich <erich.keane@intel.com>; Blower, Melanie I <melanie.blower@intel.com>; Sanjay Patel <spatel@rotateright.com>;
 Renato Golin <rengolin@gmail.com>; Hal Finkel <hal.finkel.llvm@gmail.com>; guille@berkeley.edu; ueno.masakazu@jp.fujitsu.com; Matthew.Arsenault@amd.com<br>
<b>Subject:</b> Re: fp-contract=fast and pragmas<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p><span style="font-family:"Arial",sans-serif">On 25 Jun 2021, at 17:30, Kaylor, Andrew wrote:<o:p></o:p></span></p>
</div>
<div>
<blockquote style="border:none;border-left:solid #3983C4 1.5pt;padding:0in 0in 0in 4.0pt;margin-left:0in;margin-right:0in;margin-bottom:3.75pt">
<p><span style="font-family:"Arial",sans-serif;color:#3983C4">Hi everyone,<br>
<br>
I've been exploring clang's fp-contract behavior recently, and I see that when '-ffp-contract=fast' is used it can't be overridden with a pragma. I would have regarded this as a bug (and in fact, a bug has been filed
<a href="https://bugs.llvm.org/show_bug.cgi?id=39679">https://bugs.llvm.org/show_bug.cgi?id=39679</a>). However, I've found some discussions on the mailing lists that described this as expected behavior.<br>
<br>
Last October, Sam Liu added support for a new setting ('fp-contract=fast-honor-pragmas') and updated the clang documentation to reflect the behavior of fp-contract=fast. See
<a href="https://reviews.llvm.org/D90174">https://reviews.llvm.org/D90174</a>. I feel very strongly that this should have been done the other way around -- fp-contract=fast should honor pragmas and if we need an option that doesn't that could be added.<br>
<br>
In the above review, John McCall asked what "other compilers" do. Steve Canon showed that GCC doesn't honor the pragma. If I may humbly offer another "other compiler", ICC (which doesn't distinguish between 'on' and 'fast' for fp-contract) does respect the
 pragma (<a href="https://godbolt.org/z/x5r9WdYb4">https://godbolt.org/z/x5r9WdYb4</a>). I'm not saying that ICC should be treated as a reference implementation over GCC or anything like that, but I am saying that its behavior strikes me as more correct than
 what GCC or clang currently do.<br>
<br>
Thoughts and opinions?<o:p></o:p></span></p>
</blockquote>
</div>
<div>
<p><span style="font-family:"Arial",sans-serif">I don’t disagree with you in the abstract, but we consider this a GCC-designed feature. ICC’s value as contrary precedent appears especially weak because, as you point out, they don’t really implement
</span><code><span style="font-size:10.0pt">-ffp-contract=fast</span></code><span style="font-family:"Arial",sans-serif">.<o:p></o:p></span></p>
<p><span style="font-family:"Arial",sans-serif">There are plenty of other GCC-designed things that I don’t particularly like the design of, but where we nonetheless consider ourselves bound by their behavior.<o:p></o:p></span></p>
<p><span style="font-family:"Arial",sans-serif">John.<o:p></o:p></span></p>
</div>
</div>
</div>
</body>
</html>