diff options
| author | glisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-05 16:20:44 +0000 |
|---|---|---|
| committer | glisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-05 16:20:44 +0000 |
| commit | 2a4b2a1d311624282c2ea06bb47bfe7a69548e38 (patch) | |
| tree | 1b31d51135c9ba258548f10c45d869ba38f82fe6 /libstdc++-v3/include/c_std | |
| parent | 8f3e01f2b1b05d79902cfff891ebf139da39421f (diff) | |
| download | ppe42-gcc-2a4b2a1d311624282c2ea06bb47bfe7a69548e38.tar.gz ppe42-gcc-2a4b2a1d311624282c2ea06bb47bfe7a69548e38.zip | |
2012-10-05 Marc Glisse <marc.glisse@inria.fr>
PR libstdc++/54686
* include/c_std/cstdlib (abs(long long)): Define with
__builtin_llabs when we have long long.
(abs(long)): Use __builtin_labs.
(abs(__int128)): Define when we have __int128.
* testsuite/26_numerics/headers/cstdlib/54686.c: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192132 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/c_std')
| -rw-r--r-- | libstdc++-v3/include/c_std/cstdlib | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libstdc++-v3/include/c_std/cstdlib b/libstdc++-v3/include/c_std/cstdlib index c3fe8aa4507..345920b76c2 100644 --- a/libstdc++-v3/include/c_std/cstdlib +++ b/libstdc++-v3/include/c_std/cstdlib @@ -135,7 +135,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif // _GLIBCXX_USE_WCHAR_T inline long - abs(long __i) { return labs(__i); } + abs(long __i) { return __builtin_labs(__i); } + +#ifdef _GLIBCXX_USE_LONG_LONG + inline long long + abs(long long __x) { return __builtin_llabs (__x); } +#endif + +#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_INT128) + inline __int128 + abs(__int128 __x) { return __x >= 0 ? __x : -__x; } +#endif inline ldiv_t div(long __i, long __j) { return ldiv(__i, __j); } @@ -168,9 +178,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using ::_Exit; #endif - inline long long - abs(long long __x) { return __x >= 0 ? __x : -__x; } - #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC using ::llabs; @@ -205,7 +212,6 @@ namespace std using ::__gnu_cxx::lldiv_t; #endif using ::__gnu_cxx::_Exit; - using ::__gnu_cxx::abs; #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC using ::__gnu_cxx::llabs; using ::__gnu_cxx::div; |

