<div dir="ltr"><div dir="ltr">On Wed, Sep 15, 2021 at 12:42 PM Chris Tetreault <<a href="mailto:ctetreau@quicinc.com">ctetreau@quicinc.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US" style="overflow-wrap: break-word;">
<div class="gmail-m_-8097541539822526734WordSection1">
<p class="MsoNormal">Fundamentally, the question Serge asked has nothing to do with the concerns of “compiler people”, and everything to do with the user facing behavior of the compiler. Any talk of how the behavior should be implemented is (in my opinion)
 off topic until we settle the question of “should the compiler guarantee, as a special case, that isnan(x) will not be optimized out”. This is a Yes-or-No question [...]</p></div></div></blockquote><div><br></div><div>That's a good illustration of what I meant by "application level."  The user who asks "Will my call to isnan() be 'optimized out'?" doesn't really have any sense of what's going on at the compiler level. The compiler person can say, "Yes, of course <i><b>some</b></i> calls to `isnan` can be eliminated" and show them all kinds of examples:</div><div><br></div><div>    void one(double d) { (void)isnan(d); puts("hello world"); }</div><div>    void two(double d) { d = 2.0; if (isnan(d)) puts("this branch is dead"); }<br></div><div><div>    void three(double d) { d *= 0.0; if (isnan(d)) puts("this branch is dead only in fast-math mode"); }</div><div><div><br></div></div></div><div>but they don't really care about these examples; they care about one specific use of isnan() somewhere deep inside their specific application. We can't really give a Yes or No answer about that one because we can't see it; all we can do is try to explain the rules by which the compiler decides whether a given transformation is OK or not, and then the application developer has to take those rules back home and study their own code to figure out whether the compiler will consider the transformation OK to apply to that code.</div><div><br></div><div>HTH,</div><div>Arthur</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US" style="overflow-wrap: break-word;"><div class="gmail-m_-8097541539822526734WordSection1"><div><div><div><div><div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

</blockquote></div></div>