sepavloff added inline comments.

================
Comment at: clang/test/CXX/expr/expr.const/p2-0x.cpp:281-283
+    constexpr float f10 = f2 - f2;
+    constexpr float f11 = f2 + f4;
+    constexpr float f12 = f2 / f2;
----------------
I don't think silent NaN origination is a right behavior. By design NaN is used 
to represent errors, so if a NaN appears, it may indicate a situation that 
needs user's attention. NaN propagation should be silent, an error has already 
appeared somewhere in the code.

I don't think it should be an error either. A user can use NaN to mark an error 
and treat it as if it were created by hardware. The code like:
```
    const double PosNan = 1.0 / 0.0;
    const double NegNaN = -1.0 /0.0;
    const double NaN = 0.0 / 0.0;
```
is used enough often and there is no reason to prohibit it even in constant 
evaluations. So the best reaction could be a warning. Some users may suppress 
it, some promote to error.

This applies to other FP exceptions as well, but they were implemented 
previously.



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157072

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

Reply via email to