Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/include/gccbuild.h
blob: 11601c9c9dc5c8bd460083c4298c52eb46d58dd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* BUGS:
 * bellow gcc 2.7.2 builtins are not supported
 * gcc 2.7.2.x don't inline long doubles
 * egcc 1.0.1 crash in constant propagation when certain builtins are enabled
 */


#ifndef __GCCBUILD
#define __GCCBUILD
#if defined(__GLIBC__)
#include "math.h"
#else
#if defined(__GNUC__) && defined(__i386__) && defined(__OPTIMIZE__)
#if 0
#include "i386/__math.h"
#endif
#endif
#endif

/* We really want to use builtins. Avoid any defines */
#if defined __GNUC__ && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
#define __HAVE_FABSL
#define __fabsl(x) __builtin_fabsl(x)
#define __fabs(x) __builtin_fabsl(x)
#define __fabsf(x) __builtin_fabsf(x)
#define sin(x) __builtin_sin(x)
#define cos(x) __builtin_cos(x)
#endif


#include "aconfig.h"

#ifndef __HAVE_FABSL
#ifdef HAVE_FABSL
#define __fabsl fabsl
#define __HAVE_FABSL
#else
#ifdef HAVE__FABSL
#define __fabsl _fabsl
#define __HAVE_FABSL
#else
#ifdef HAVE___FABSL
#define __HAVE___FABSL
#endif
#endif
#endif
#endif

/* GCC 2.7.x have problems with long double inlines. Disable them! */
#if defined __GNUC__ && (__GNUC__ == 2 && __GNUC_MINOR__ <= 7)
#undef __HAVE_FABSL
#endif

#ifdef HAVE_LONG_DOUBLE
#ifndef __HAVE_FABSL
#define myabs(x) ((x)>0?(x):-(x))
#else
#define myabs(x) __fabsl((number_t)(x))
#endif
#else
#define myabs(x) fabs((number_t)(x))
#endif


#endif				/*gccbuild */