mibintc added inline comments.

================
Comment at: clang/test/CodeGen/fp-floatcontrol-pragma.cpp:154
+  if (i<0)
+  return 1.0 + 2.0;
+  // Check that floating point constant folding doesn't occur if
----------------
sepavloff wrote:
> In this particular case we know for sure that the result does not depend on 
> rounding mode and no FP exceptions occurs, so it is safe to constfold the 
> expression.
> 
> Expressions like `1.0 / 0.0` or `1.0F + 0x0.000001p0F` indeed may require 
> execution in runtime, depending on the required exception handling. I would 
> propose to connect their const-evaluability with `FPExceptionMode` and set 
> the latter to `strict` whenever `AllowFEnvAccess` is set to `true`. 
Thank you, I will study these remarks.  BTW I had inserted checks to verify 
semantic rules about the use of pragma float_control and fenv_access, to follow 
what Microsoft describes on this page, 
https://docs.microsoft.com/en-us/cpp/preprocessor/fenv-access?view=vs-2019 
Quoting:
There are restrictions on the ways you can use the fenv_access pragma in 
combination with other floating-point settings:

You can't enable fenv_access unless precise semantics are enabled. Precise 
semantics can be enabled either by the float_control pragma, or by using the 
/fp:precise or /fp:strict compiler options. The compiler defaults to 
/fp:precise if no other floating-point command-line option is specified.

You can't use float_control to disable precise semantics when fenv_access(on) 
is set.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D87528/new/

https://reviews.llvm.org/D87528

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to