Fix sin, cos, tan in non-default rounding modes (bug 3976)
Joseph S. Myers
joseph@codesourcery.com
Sat Mar 3 18:32:00 GMT 2012
On Sat, 3 Mar 2012, Richard Henderson wrote:
> >> Might it be easier to set up a macro in an internal header,
> >>
> >> #define WRAP_ROUND_TO_NEAREST \
> >> fenv_t env __attribute__((cleanup(libc_feupdateenv))); \
> >> libc_feholdexcept_setround (&env, FE_TONEAREST)
> >>
> >> and letting the compiler insert the cleanup?
> >
> > libc_feupdateenv is a macro, not a function, so I don't think that will
> > work as-is.
>
> Yeah, well, turning it into an always_inline static function
> should be trivial, right?
Feel free to do this if you think it makes the code clearer (without
making the generated code any worse) (I think these functions are rather a
mess generally, but probably aren't worth that much cleanup that isn't
actually fixing bugs given that hopefully they'll end up replaced by a
more modern, faster set of automatically generated correctly rounding
functions). Or file an issue in Bugzilla for the cleanup since that's now
the preferred approach for bugs and cleanups someone notices but isn't
immediately planning to work in.
--
Joseph S. Myers
joseph@codesourcery.com
More information about the Libc-alpha
mailing list