]> granicus.if.org Git - llvm/commitdiff
[ADT] PointerUnion: Use C++14 constexpr std::min
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 15 Aug 2019 11:49:00 +0000 (11:49 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 15 Aug 2019 11:49:00 +0000 (11:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@368992 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/PointerUnion.h

index 2bcdf546c6e4bd2c27d997c9d7e357493ddeec0a..93533de776b65c8679ea48f59634a26c20c66a8c 100644 (file)
@@ -54,21 +54,14 @@ struct PointerUnionTypeSelectorReturn<
 };
 
 namespace pointer_union_detail {
-  constexpr int constexprMin(int a, int b) { return a < b ? a : b; }
   /// Determine the number of bits required to store integers with values < n.
   /// This is ceil(log2(n)).
   constexpr int bitsRequired(unsigned n) {
     return n > 1 ? 1 + bitsRequired((n + 1) / 2) : 0;
   }
 
-  // FIXME: In C++14, replace this with
-  //   std::min({PointerLikeTypeTraits<Ts>::NumLowBitsAvailable...})
-  template <typename T> constexpr int lowBitsAvailable() {
-    return PointerLikeTypeTraits<T>::NumLowBitsAvailable;
-  }
-  template <typename T1, typename T2, typename... Ts>
-  constexpr int lowBitsAvailable() {
-    return constexprMin(lowBitsAvailable<T1>(), lowBitsAvailable<T2, Ts...>());
+  template <typename... Ts> constexpr int lowBitsAvailable() {
+    return std::min<int>({PointerLikeTypeTraits<Ts>::NumLowBitsAvailable...});
   }
 
   /// Find the index of a type in a list of types. TypeIndex<T, Us...>::Index