[clang] [Clang][doc] -ffp-contract options and standard compliance (PR #127621)

Andy Kaylor via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 18 09:52:39 PST 2025


================
@@ -1681,19 +1681,25 @@ for more details.
    permitted to produce more precise results than performing the same
    operations separately.
 
-   The C standard permits intermediate floating-point results within an
+   The C/C++ standard permits intermediate floating-point results within an
    expression to be computed with more precision than their type would
    normally allow. This permits operation fusing, and Clang takes advantage
-   of this by default. This behavior can be controlled with the ``FP_CONTRACT``
-   and ``clang fp contract`` pragmas. Please refer to the pragma documentation
-   for a description of how the pragmas interact with this option.
+   of this by default (``on``). Fusion across statements is non-C/C++ standard
+   compliant behavior and can be enabled (``fast``).
+
+   Fusion can be controlled with the ``FP_CONTRACT`` and ``clang fp contract``
+   pragmas. Please refer to the pragma documentation for a description of how
+   the pragmas interact with this option.
 
    Valid values are:
 
-   * ``fast`` (fuse across statements disregarding pragmas, default for CUDA)
-   * ``on`` (fuse in the same statement unless dictated by pragmas, default for languages other than CUDA/HIP)
-   * ``off`` (never fuse)
-   * ``fast-honor-pragmas`` (fuse across statements unless dictated by pragmas, default for HIP)
+   * ``fast``: enable non-C/C++ standard compliant behavior and fusion across
+     statements disregarding pragmas (default for CUDA)
----------------
andykaylor wrote:

I would change the order here. Fusion across expressions is the important point for most people. Perhaps "enable fusion across expressions, breaking compliance with the C/C++ standard (default for CUDA)"?

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


More information about the cfe-commits mailing list