[clang] [clang] Use constant rounding mode for floating literals (PR #90877)
Serge Pavlov via cfe-commits
cfe-commits at lists.llvm.org
Fri May 3 08:48:32 PDT 2024
================
@@ -79,3 +79,16 @@ float V7 = []() -> float {
0x0.000001p0F);
}();
// CHECK: @V7 = {{.*}} float 1.000000e+00
+
+template<float V> struct L {
+ constexpr L() : value(V) {}
+ float value;
+};
+
+#pragma STDC FENV_ROUND FE_DOWNWARD
----------------
spavloff wrote:
In this snippet `Val` in `foo<float, 0.1F>()` should be `float 0x3FB99999A0000000` (rounded upward), because the literal `0.1F` is in the region, where `#pragma STDC FENV_ROUND FE_UPDWARD` is in effect. The body of `foo` does not contain literals.
https://github.com/llvm/llvm-project/pull/90877
More information about the cfe-commits
mailing list