efriedma added a comment.

> setRoundingMode definitely should not call getAllowFEnvAccess() and it does 
> not

Yes, it does?

  // C2x: 7.6.2p3  If the FE_DYNAMIC mode is specified and FENV_ACCESS is "off",
  // the translator may assume that the default rounding mode is in effect.
  if (FPR == llvm::RoundingMode::Dynamic &&
      !CurFPFeatures.getAllowFEnvAccess() &&
      CurFPFeatures.getFPExceptionMode() == LangOptions::FPE_Ignore)
    FPR = llvm::RoundingMode::NearestTiesToEven;



> As for ActOnPragmaFEnvAccess, it make sense to set the most general mode.

Shouldn't the default mode just be "dynamic"?  The fact that we emit non-strict 
floating-point ops if FENV_ACCESS is disabled is an implementation detail.  I 
don't see the point of switching the rounding mode between "Dynamic" and 
"NearestTiesToEven" depending on whether FENV_ACCESS is enabled.  Making the 
required state transitions complicated like this just makes the code harder to 
understand.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D126364/new/

https://reviews.llvm.org/D126364

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to