[PATCH] D126364: Fix interaction of pragma FENV_ACCESS with other pragmas
Serge Pavlov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 6 11:56:37 PDT 2022
sepavloff added inline comments.
================
Comment at: clang/include/clang/Basic/LangOptions.h:622
setFPContractMode(LangOptions::FPM_Off);
setRoundingMode(static_cast<RoundingMode>(LangOptions::FPR_ToNearest));
setFPExceptionMode(LangOptions::FPE_Ignore);
----------------
efriedma wrote:
> I'm suggesting this should be `setRoundingMode(llvm::RoundingMode::Dynamic)`.
>
> If FENV_ACCESS is off, getEffectiveRoundingMode() converts that to "nearest". If FENV_ACCESS is turned on, the mode is treated as dynamic. This is exactly what we want.
It would change semantics. In particular, it would make impossible to use FP arithmetic in constexpr functions. An expression like `1.0 / 3.0` cannot be evaluated with dynamic rounding mode.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126364/new/
https://reviews.llvm.org/D126364
More information about the cfe-commits
mailing list