<div dir="ltr"><div dir="ltr">Hey John,<div><br></div><div>This is something we're currently working on. See:</div><div><br></div><div><a href="https://llvm.org/docs/LangRef.html#constrained-floating-point-intrinsics">https://llvm.org/docs/LangRef.html#constrained-floating-point-intrinsics</a><br></div><div><br></div><div>There's still a lot to be done though. Short of this work, I don't think you'll find guarantees of trap-safety in LLVM.</div><div><br></div><div>Hope that helps,</div><div>Cameron</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 7, 2019 at 7:38 AM Dallman, John via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">





<div lang="EN-GB">
<div class="gmail-m_2608544194475078012WordSection1">
<p class="MsoNormal">I produce a mathematical modelling library on several platforms, including iOS, macOS and Android, all of which use Clang. On x86-based platforms, the hardware can generate floating-point traps. I prefer to run testing with traps for Invalid
 Operation, Divide-by-Zero and Overflow active, since that finds me problem sites more quickly than working backwards from “this test case failed.”<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">However, I had a problem with Apple Clang 8.x, which I believe was LLVM 3.9, targeting x86-64, in that the optimiser was assuming that floating-point traps were turned off. This was shown, for example, by the way it hoisted floating-point
 divides above tests of the divisor that were meant to safeguard the divides. <u></u>
<u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">After a long support case with Apple, they gave me some Clang command-line options for LLVM  that suppressed the problem:
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:36pt">-mllvm -speculate-one-expensive-inst=false
<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:36pt">-mllvm -bonus-inst-threshold=0<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I appreciate that this costs some performance, and I can accept that. These options worked fine for Apple Clang 9.x, whose various versions seem to have been based on LLVM 4.x and 5.x.
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Now I’ve come to Apple Clang 10.0, which seems to be based on LLVM 6.0.1, and I have lots of floating-point traps again in optimised x86-64 code. It seems possible that I need some further LLVM options: does this seem plausible?
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I’m not familiar with the LLVM codebase, and while I can find the source files that list the options I can use with -mllvm, I’d be guessing at which options are worth trying. Can anyone make suggestions?
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks very much, <u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="font-size:10pt">--
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt">John Dallman<u></u><u></u></span></p>
</div>
<p style="font-family:Arial;font-size:70%">-----------------<br>
Siemens Industry Software Limited is a limited company registered in England and Wales.<br>
Registered number: 3476850.<br>
Registered office: Faraday House, Sir William Siemens Square, Frimley, Surrey, GU16 8QD.
</p>
</div>

_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=DwIGaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=O_4M49EtSpZ_-BQYeigzGv0P4__noMcSu2RYEjS1vKs&m=IC13mZDPBlFkZy7YgY9bDEEcxXgLsKe8iW9CgRH7FAw&s=hyOpVv8agMXpo59RhecwFSIoie-MoFmN-7hxu_fsrbk&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=DwIGaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=O_4M49EtSpZ_-BQYeigzGv0P4__noMcSu2RYEjS1vKs&m=IC13mZDPBlFkZy7YgY9bDEEcxXgLsKe8iW9CgRH7FAw&s=hyOpVv8agMXpo59RhecwFSIoie-MoFmN-7hxu_fsrbk&e=</a><br>
</blockquote></div>