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
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to