[PATCH] D137578: Fix 'unsafe-math-optimizations' flag dependencies
Zahira Ammarguellat via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 10 05:15:41 PST 2022
zahiraam added inline comments.
================
Comment at: clang/lib/Frontend/CompilerInvocation.cpp:3957
- if (Arg *A = Args.getLastArg(OPT_ffp_contract)) {
- StringRef Val = A->getValue();
- if (Val == "fast")
+ if (auto *A = Args.getLastArg(OPT_ffp_contract, OPT_cl_fast_relaxed_math,
+ OPT_cl_unsafe_math_optimizations)) {
----------------
michele.scandale wrote:
> If I look only at the CC1 behavior then I think this is probably the desired behavior.
>
> However from the compiler driver perspective it seems that `-ffp-contract` and `-cl-*` math options don't really play well together -- in `RenderFloatingPointOptions` the OpenCL related options are not considered, and similarly in `RenderOpenCLOptions` the other floating point options are not considered.
>
> It's not clear to me if it is expected to mix OpenCL specific options with other floating point related options -- given todays code it seems that is not expected.
> For the time being it is probably better to simply keep the `ffp_contract` handling as is today, and modify the code around line 3803 as follow
> ```
> if (Opts.FastRelaxedMath || Opts.CLUnsafeMath)
> Opts.setDefaultFPContractMode(LangOptions::FPM_Fast);
> ```
> to handle `-cl-unsafe-math-optimizations` similarly to `-cl-fast-relaxed-math` w.r.t. contraction behavior.
>>
It's not clear to me if it is expected to mix OpenCL specific options with other floating point related options -- given todays code it seems that is not expected.
>>
Yes, it looks like the FP options and CL options are orthogonal. Even so not sure how OpenCL people will react to the LIT test behavioral change (relaxed-fpmath.cl). Thanks.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137578/new/
https://reviews.llvm.org/D137578
More information about the cfe-commits
mailing list