[PATCH 3/4] Add ILP32 support to aarch64
Steve Ellcey
sellcey@cavium.com
Thu Aug 3 18:22:00 GMT 2017
On Thu, 2017-08-03 at 17:47 +0000, Joseph Myers wrote:
> On Thu, 3 Aug 2017, Steve Ellcey wrote:
>
> >
> > +#if OREG_SIZE == 32
> > +Â Â /* The rounding step may set FE_INEXEXACT and converting to a 32
> > bit
> > +     value may set FE_INVALID.  We do not want FE_INEXACT set when
> > +     FE_INVALID has been set.  */
> > +Â Â if (libc_fetestexcept_aarch64 (FE_INVALID))
> > +Â Â Â Â libc_feclearexcept_aarch64 (FE_INEXACT);
> > +#endif
> This sort of thing is never correct, because it would clear an
> "inexact"Â
> exception that was already set on entry to the function, and
> functionsÂ
> other than <fenv.h> specified to do so should never clear already-
> raisedÂ
> exceptions.
>
> (Also, typo "FE_INEXEXACT".)
I hadn't considered that. Â So maybe I could save the environment
(feholdexcept), do the calculation and see which exceptions, if any,
got raised. Â Then restore the original environment (fesetenv) and raise
one or the other exceptions if needed. Â Does that sound like a workable
solution?
Steve Ellcey
sellcey@cavium.com
More information about the Libc-alpha
mailing list