<div dir="ltr">Unfortunately the LLVM x86 backend has at least one bug that causes FPU exceptions on valid FP operations that I know of: <a href="https://bugs.llvm.org/show_bug.cgi?id=30885">https://bugs.llvm.org/show_bug.cgi?id=30885</a>. You can work around that bug by using -march=haswell, if you continue to hit other exceptions you can file LLVM bugs against them, though I'm not sure if there is anyone actively interested in fixing them. Good luck.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 7, 2019 at 4: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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-GB" link="#0563C1" vlink="#954F72">
<div class="m_-6590770509462522235WordSection1">
<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:36.0pt">-mllvm -speculate-one-expensive-inst=false
<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:36.0pt">-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:10.0pt">--
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">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://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div>