sepavloff 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
----------------
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`. 


================
Comment at: clang/test/CodeGen/pragma-fenv_access.c:9
+// CHECK-LABEL: @func_01
+// CHECK: call float @llvm.experimental.constrained.fadd.f32(float {{.*}}, 
float {{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
+
----------------
Shall the rounding mode be `dynamic` rather than `tonearest`? If `#pragma STDC 
FENV_ACCESS ON` is specified, it means FP environment may be changed in 
arbitrary way and we cannot expect any particular rounding mode. Probably the 
environment was changed in the caller of `func_01`.


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