[PATCH] D20457: Update -ffast-math documentation to match reality.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Thu May 19 18:38:15 PDT 2016


On Thu, May 19, 2016 at 6:11 PM, Justin Lebar via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> jlebar created this revision.
> jlebar added a reviewer: rsmith.
> jlebar added a subscriber: cfe-commits.
>
> http://reviews.llvm.org/D20457
>
> Files:
>   include/clang/Basic/LangOptions.def
>   include/clang/Driver/Options.td
>
> Index: include/clang/Driver/Options.td
> ===================================================================
> --- include/clang/Driver/Options.td
> +++ include/clang/Driver/Options.td
> @@ -592,9 +592,13 @@
>  def : Flag<["-"], "fno-extended-identifiers">, Group<f_Group>,
> Flags<[Unsupported]>;
>  def fhosted : Flag<["-"], "fhosted">, Group<f_Group>;
>  def ffast_math : Flag<["-"], "ffast-math">, Group<f_Group>,
> Flags<[CC1Option]>,
> -  HelpText<"Enable the *frontend*'s 'fast-math' mode. This has no effect
> on "
> -           "optimizations, but provides a preprocessor macro
> __FAST_MATH__ the "
> -           "same as GCC's -ffast-math flag">;
> +  HelpText<"Enable fast-math mode. This defines the __FAST_MATH__
> preprocessor "
> +           "macro, and lets the compiler make aggressive, potentially
> unsafe "
> +           "assumptions about floating-point math.  These include: "
> +           "Floating-point math obeys regular algebraic rules for real "
> +           "numbers (e.g. + and * are associative, and x/y == x * (1/y)),
> "
> +           "operands to fp operations are not equal to NaN and Inf, and
> +0 "
> +           "and -0 are interchangeable.">;
>

This is significantly too long for HelpText. The current help text for this
flag is already too long:

$ clang --help
[...]
  -fembed-bitcode         Embed LLVM IR bitcode as data
  -femit-all-decls        Emit all declarations, even if unused
  -femulated-tls          Use emutls functions to access thread_local
variables
  -fexceptions            Enable support for exception handling
  -ffast-math             Enable the *frontend*'s 'fast-math' mode. This
has no effect on optimizations, but provides a preprocessor macro
__FAST_MATH__ the same as GCC's -ffast-math flag
  -ffixed-r9              Reserve the r9 register (ARM only)
  -ffixed-x18             Reserve the x18 register (AArch64 only)
[...]

Can you move this to UsersManual.rst instead, and put something short here
instead, like "Allow aggressive, lossy floating-point optimizations"?

 def fno_fast_math : Flag<["-"], "fno-fast-math">, Group<f_Group>;
>  def fmath_errno : Flag<["-"], "fmath-errno">, Group<f_Group>,
> Flags<[CC1Option]>,
>    HelpText<"Require math functions to indicate errors by setting errno">;
> Index: include/clang/Basic/LangOptions.def
> ===================================================================
> --- include/clang/Basic/LangOptions.def
> +++ include/clang/Basic/LangOptions.def
> @@ -162,7 +162,7 @@
>  COMPATIBLE_LANGOPT(GNUInline         , 1, 0, "GNU inline semantics")
>  COMPATIBLE_LANGOPT(NoInlineDefine    , 1, 0, "__NO_INLINE__ predefined
> macro")
>  COMPATIBLE_LANGOPT(Deprecated        , 1, 0, "__DEPRECATED predefined
> macro")
> -COMPATIBLE_LANGOPT(FastMath          , 1, 0, "__FAST_MATH__ predefined
> macro")
> +COMPATIBLE_LANGOPT(FastMath          , 1, 0, "Fast fp math optimizations,
> and __FAST_MATH__ predefined macro")
>

Something like "fast FP math [...]" would fit better into the diagnostics
where this appears.


>  COMPATIBLE_LANGOPT(FiniteMathOnly    , 1, 0, "__FINITE_MATH_ONLY__
> predefined macro")
>  COMPATIBLE_LANGOPT(UnsafeFPMath      , 1, 0, "Unsafe Floating Point Math")
>
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160519/59a2b2a9/attachment.html>


More information about the cfe-commits mailing list