Commit e449a8b2 authored by Robert Bradshaw's avatar Robert Bradshaw

remove gcc dependance for inline, branch prediction

parent eebdac3b
...@@ -2590,12 +2590,20 @@ class FromImportStatNode(StatNode): ...@@ -2590,12 +2590,20 @@ class FromImportStatNode(StatNode):
utility_function_predeclarations = \ utility_function_predeclarations = \
""" """
#ifdef __GNUC__
#define INLINE __inline__
#elif _WIN32
#define INILNE __inline
#else
#define INLINE
#endif
typedef struct {const char *s; const void **p;} __Pyx_CApiTabEntry; /*proto*/ typedef struct {const char *s; const void **p;} __Pyx_CApiTabEntry; /*proto*/
typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/ typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/
typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/ typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/
#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static inline int __Pyx_PyObject_IsTrue(PyObject* x) { static INILNE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (x == Py_True) return 1; if (x == Py_True) return 1;
else if (x == Py_False) return 0; else if (x == Py_False) return 0;
else return PyObject_IsTrue(x); else return PyObject_IsTrue(x);
...@@ -2606,8 +2614,13 @@ static inline int __Pyx_PyObject_IsTrue(PyObject* x) { ...@@ -2606,8 +2614,13 @@ static inline int __Pyx_PyObject_IsTrue(PyObject* x) {
if Options.gcc_branch_hints: if Options.gcc_branch_hints:
branch_prediction_macros = \ branch_prediction_macros = \
""" """
#ifdef __GNUC__
#define likely(x) __builtin_expect(!!(x), 1) #define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0) #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* __GNUC__ */
#define likely(x) (x)
#define unlikely(x) (x)
#endif /* __GNUC__ */
""" """
else: else:
branch_prediction_macros = \ branch_prediction_macros = \
......
...@@ -1662,7 +1662,7 @@ def p_visibility(s, prev_visibility): ...@@ -1662,7 +1662,7 @@ def p_visibility(s, prev_visibility):
def p_c_modifiers(s): def p_c_modifiers(s):
if s.systring in ('inline', ): if s.systring in ('inline', ):
modifier = s.systring modifier = s.systring.upper() # uppercase is macro defined for various compilers
s.next() s.next()
return modifier + ' ' + p_c_modifiers(s) return modifier + ' ' + p_c_modifiers(s)
return "" return ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment