From 0aa900e94fce1c444b6c9688f9a47314ecaefbf3 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Thu, 27 Dec 2012 18:59:05 +0000 Subject: [PATCH] Saleem Abdulrasool: Silence warning and reduce unnecessary code in hash.cpp. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@171167 91177308-0d34-0410-b5e6-96231b3b80d8 --- src/hash.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/hash.cpp b/src/hash.cpp index 6f30d5a6..d785f1a1 100644 --- a/src/hash.cpp +++ b/src/hash.cpp @@ -10,6 +10,10 @@ #include "__hash_table" #include "algorithm" #include "stdexcept" +#include "type_traits" + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-constant-out-of-range-compare" _LIBCPP_BEGIN_NAMESPACE_STD @@ -144,21 +148,23 @@ const unsigned indices[] = // are fewer potential primes to search, and fewer potential primes to divide // against. +template inline _LIBCPP_INLINE_VISIBILITY -void -__check_for_overflow(size_t N, integral_constant) +typename enable_if<_Sz == 4, void>::type +__check_for_overflow(size_t N) { -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_NO_EXCEPTIONS if (N > 0xFFFFFFFB) throw overflow_error("__next_prime overflow"); #endif } +template inline _LIBCPP_INLINE_VISIBILITY -void -__check_for_overflow(size_t N, integral_constant) +typename enable_if<_Sz == 8, void>::type +__check_for_overflow(size_t N) { -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_NO_EXCEPTIONS if (N > 0xFFFFFFFFFFFFFFC5ull) throw overflow_error("__next_prime overflow"); #endif @@ -174,8 +180,7 @@ __next_prime(size_t n) return *std::lower_bound(small_primes, small_primes + N, n); // Else n > largest small_primes // Check for overflow - __check_for_overflow(n, integral_constant()); + __check_for_overflow(n); // Start searching list of potential primes: L * k0 + indices[in] const size_t M = sizeof(indices) / sizeof(indices[0]); // Select first potential prime >= n