[clang] [NFC] Add assertion to ensure FiniteMathOnly is in sync with HonorINFs and HonorNANs. (PR #97342)

Zahira Ammarguellat via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 2 11:56:23 PDT 2024


================
@@ -816,6 +816,11 @@ class FPOptions {
     setAllowFPReassociate(LO.AllowFPReassoc);
     setNoHonorNaNs(LO.NoHonorNaNs);
     setNoHonorInfs(LO.NoHonorInfs);
+    // Ensure that if FiniteMathOnly is enabled, NoHonorNaNs and NoHonorInfs are
+    // also enabled. This is because FiniteMathOnly mode assumes no NaNs or Infs
+    // are present in computations.
+    if (!LO.NoHonorInfs || !LO.NoHonorInfs)
+      assert(!LO.FiniteMathOnly && "FiniteMathOnly implies NoHonorInfs");
----------------
zahiraam wrote:

There is quite a bit of LIT tests that have that "logic bug" then. They are using` -Xclang -menable-no-infs -Xclang  -menable-no-nan` without the `-ffinite-math-only` option.

Getting rid of `FiniteMathOnly` is fine by me. 
`FiniteMathOnly = !HonorINFs && !HonorNaNs` which would mean `-menable-no-infs -menable-non-nans`. I would think using one or the other of these options could still mean that input values may be either INF or NAN or we can produce them, in which case we wouldn't be in finite math mode.

https://github.com/llvm/llvm-project/pull/97342


More information about the cfe-commits mailing list