Commit d42afbfb authored by Stefan Behnel's avatar Stefan Behnel

Remove all (incorrect) casts in abs(long long).

parent 55217d45
...@@ -235,20 +235,20 @@ static PyObject* __Pyx_Intern(PyObject* s) { ...@@ -235,20 +235,20 @@ static PyObject* __Pyx_Intern(PyObject* s) {
static CYTHON_INLINE PY_LONG_LONG __Pyx_abs_longlong(PY_LONG_LONG x) { static CYTHON_INLINE PY_LONG_LONG __Pyx_abs_longlong(PY_LONG_LONG x) {
#if defined (__cplusplus) && __cplusplus >= 201103L #if defined (__cplusplus) && __cplusplus >= 201103L
return (unsigned PY_LONG_LONG) std::abs(x); return std::abs(x);
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
return (unsigned PY_LONG_LONG) llabs(x); return llabs(x);
#elif defined (_MSC_VER) #elif defined (_MSC_VER)
// abs() is defined for long, but 64-bits type on MSVC is long long. // abs() is defined for long, but 64-bits type on MSVC is long long.
// Use MS-specific _abs64() instead, which returns the original (negative) value for abs(-MAX-1) // Use MS-specific _abs64() instead, which returns the original (negative) value for abs(-MAX-1)
return _abs64(x); return _abs64(x);
#elif defined (__GNUC__) #elif defined (__GNUC__)
// gcc or clang on 64 bit windows. // gcc or clang on 64 bit windows.
return (unsigned PY_LONG_LONG) __builtin_llabs(x); return __builtin_llabs(x);
#else #else
if (sizeof(PY_LONG_LONG) <= sizeof(Py_ssize_t)) if (sizeof(PY_LONG_LONG) <= sizeof(Py_ssize_t))
return (unsigned PY_LONG_LONG) __Pyx_sst_abs(x); return __Pyx_sst_abs(x);
return (x<0) ? (unsigned PY_LONG_LONG)-x : (unsigned PY_LONG_LONG)x; return (x<0) ? x*(PY_LONG_LONG)-1 : x;
#endif #endif
} }
......
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