[clang] [clang] Remove FEM_Indeterminable (PR #137661)
Zahira Ammarguellat via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 28 12:42:15 PDT 2025
zahiraam wrote:
> > > @zahiraam @AaronBallman a different option would be to add a signed vs unsigned storage option to the `OPTION` and `BENIGN_ENUM_LANGOPT` macros so we can store negative enumerations safely
> >
> >
> > I think I would prefer this solution. We need to be able to set the evaluation method to a value (-1) when it can't be known from the target or when the value of `ffp-eval-method` is inconsistent with the target.
>
> Could we shift all the values, so `FEM_Indeterminable` is `0`?
I don't think so. In practice on Linux systems, they use `__FLT_EVAL_METHOD__` to control the type of `float_t` and `double_t`. Things like this:
`# if __FLT_EVAL_METHOD__ == -1`
`# define __GLIBC_FLT_EVAL_METHOD 2`
....
```
# if __GLIBC_FLT_EVAL_METHOD == 0 || __GLIBC_FLT_EVAL_METHOD == 16
typedef float float_t;
typedef double double_t;
# elif __GLIBC_FLT_EVAL_METHOD == 1
typedef double float_t;
typedef double double_t;
# elif __GLIBC_FLT_EVAL_METHOD == 2
typedef long double float_t;
typedef long double double_t;
# elif __GLIBC_FLT_EVAL_METHOD == 32
typedef _Float32 float_t;
typedef double double_t;
...
```
https://github.com/llvm/llvm-project/pull/137661
More information about the cfe-commits
mailing list