__exm1 and __expl are exposed, but not exported.
Jakub Jelinek
jakub@redhat.com
Mon Jun 12 07:26:00 GMT 2000
On Mon, Jun 12, 2000 at 07:22:30AM -0700, H . J . Lu wrote:
> On Mon, Jun 12, 2000 at 09:16:13AM +0200, Jakub Jelinek wrote:
> > On Sun, Jun 11, 2000 at 10:07:21PM -0700, H . J . Lu wrote:
> > > __exm1 and __expl are used in sysdeps/i386/fpu/bits/mathinline.h.
> > > But they are not exported.
> >
> > Can you cvs update?
> > I hope this is already fixed:
> >
> > 2000-06-04 Jakub Jelinek <jakub@redhat.com>
> >
> > * sysdeps/i386/fpu/bits/mathinline.h: Only inline sinh, cosh and tanh
> > if -ffast-math.
> >
>
> Yes. Then I did
>
> # grep __exm1 sysdeps/i386/fpu/bits/mathinline.h
> register long double __exm1 = __expm1l (__fabsl (__x)); \
> return 0.5 * (__exm1 / (__exm1 + 1.0) + __exm1) * __sgn1l (__x))
> register long double __exm1 = __expm1l (-__fabsl (__x + __x)); \
> return __exm1 / (__exm1 + 2.0) * __sgn1l (-__x))
> register long double __exm1 = __expm1l (__fabsl (__x)); \
> return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1)
> # grep __expl sysdeps/i386/fpu/bits/mathinline.h
> __inline_mathcodeNP_ (long double, __expl, __x, __exp_code)
> register long double __ex = __expl (__x); \
>
> I don't see how -ffast-math will do anything. If they are in the
> public header files, they are exposed. I can compile my code with
> -ffast-math.
You're right in that they probably should be exported, because gcc may fail
to inline them and as they are extern inline, that will cause undefined
references.
-ffast-math matters, because __expm1 and __expl are only defined if
__FAST_MATH__ is defined, but were used always if __OPTIMIZE__.
Jakub
More information about the Libc-hacker
mailing list