<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>The following addresses action item:</div><div><br></div><div><blockquote type="cite"><p class="MsoNormal">    Jim: Write up a suggestion re. semantic rules for constant evaluation.</p></blockquote></div><div><br></div><div><br></div><div><b>Background:</b></div><div><br></div><div>In email to CFP, Vincent Lefevre noted that 6.6.1 #17 says</div><div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div>The semantic rules for the evaluation of a constant expression are the same as for nonconstant expressions.122)</div></div></blockquote><div><br></div><div>and he commented “this cannot be true for status flags, as they cannot be raised at translation time.” One could argue that an implication that status flags are raised, or a statement that they are not raised, at translation time is inconsequential, since C doesn’t provide a way to access status flags at translation time. </div><div>However, a clear contradiction to 6.6.1 #17 is in 6.6.1 #5: </div><div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div>… If a floating expression is evaluated in the translation environment, the arithmetic range and precision shall be at least as great as if the expression were being evaluated in the execution environment.</div></div></blockquote><div><br></div><div>which has been understood to mean that the translation environment can use more range and precision.</div><div><br></div><div>Note that this license is limited by the fact that evaluation methods characterized by the evaluation method macros (5.3.5.3.3) apply to both execution time and translation time evaluations (see footnote 117 in 6.6.1). Thus using more range and precision for translation time evaluation is not permitted under the standard specified evaluation methods.</div><div><br></div><div>The suggested change below qualifies 6.6.1 #17 to remove the contradiction. </div><div><br></div><div>Alternatively, 6.6.1 #17 could be deleted, because the semantic rules for evaluation of expressions don’t say they are just for execution time. However, #17 might be a helpful in highlighting a significant fact, and it provides an anchor for footnote 122.</div><div><br></div><div><b>Suggested change:</b></div><div><br></div><div>Change 6.6.1 #17 to:</div><div><br></div><div><blockquote style="margin: 0px 0px 0px 40px; border: medium; padding: 0px;">The semantic rules for the evaluation of a constant expression are the same as for nonconstant expressions<font color="#4f7a28">, unless explicitly stated otherwise</font>.122)</blockquote></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></body></html>