<div dir="ltr"><div>Hi Sergey -<br><br></div>Does this solve part of the problem?<br><a href="http://llvm.org/viewvc/llvm-project?view=revision&revision=215222">http://llvm.org/viewvc/llvm-project?view=revision&revision=215222</a><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 19, 2014 at 9:12 AM, Sergey Dmitrouk <span dir="ltr"><<a href="mailto:sdmitrouk@accesssoftek.com" target="_blank">sdmitrouk@accesssoftek.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I'd like to make code emitted by LLVM that includes floating point<br>
operations which raise FP exceptions behave closer to what is defined by<br>
IEEE754 standard.  I'm not going to "fix everything", just incorrect<br>
behaviour I faced so far.<br>
<br>
Most of troubles regarding FP exceptions are caused by optimizations, so<br>
there should be a flag to disable/block them if one wants to get better<br>
code in a sense of its IEEE754 conformance.  I couldn't find an existing<br>
flag for this and would like to introduce one.  I guess it should be<br>
added to llvm::TargetOptions (e.g. "IEEE754FPE"), then -std=c99 or<br>
separate option could enable it from front-end (Clang in this case).<br>
<br>
I'm doing this for ARM platform and the flag should be reachable from<br>
all these places in LLVM:<br>
<br>
 - lib/Analysis/ValueTracking.cpp<br>
 - lib/CodeGen/SelectionDAG/SelectionDAG.cpp<br>
 - lib/IR/ConstantFold.cpp<br>
 - lib/Target/ARM/ARMFastISel.cpp<br>
 - lib/Target/ARM/ARMISelLowering.cpp<br>
 - lib/Target/ARM/ARMInstrVFP.td (through predicates)<br>
 - lib/Target/ARM/ARMRegisterInfo.td (through predicates)<br>
<br>
and in Clang:<br>
<br>
 - lib/AST/ExprConstant.cpp<br>
<br>
Did I get it right and there is no such flag so far?  Does what I'm<br>
suggesting sounds reasonable?<br>
<br>
Thanks,<br>
Sergey<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br></div>