This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 3/4] Add ILP32 support to aarch64


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]