hubert-reinterpretcast wrote:

> * If `FENV_ACCESS` is off and `FENV_ROUND` is present, then we are in the 
> fully default FP environment except that the rounding mode isn't necessarily 
> in the default rounding mode. We can do the translation at compile-time, even 
> if `FENV_ROUND` is `FE_DYNAMIC` (since the translator is explicitly allowed 
> to assume that it's in the default round per the C specification).

Okay, but for the question of whether the "constant rounding mode" or "dynamic 
round mode" is used for this folding outside of a manifestly constant-evaluated 
context, I think it should actually be the "dynamic rounding mode" (i.e., 
default rounding with `FENV_ROUND` effectively ignored) if the call is not 
`__builtin_`-prefixed. This goes back to the responsibility of some header to 
modify calls that are subject to `FENV_ROUND`-controlled behaviour via macro 
replacement (e.g., to call a different built-in).

I think the `__builtin_`-prefixed cases should behave the same unless there is 
a compelling reason to do otherwise.

https://github.com/llvm/llvm-project/pull/158048
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to