[flang-commits] [PATCH] D120848: [flang] Fix warning from MSVC build

Peter Klausler via Phabricator via flang-commits flang-commits at lists.llvm.org
Wed Mar 2 14:07:04 PST 2022


klausler created this revision.
klausler added a reviewer: vdonaldson.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a project: All.
klausler requested review of this revision.

Expand common::BitSet from 64 to 128 maximum elements.


https://reviews.llvm.org/D120848

Files:
  flang/include/flang/Common/constexpr-bitset.h


Index: flang/include/flang/Common/constexpr-bitset.h
===================================================================
--- flang/include/flang/Common/constexpr-bitset.h
+++ flang/include/flang/Common/constexpr-bitset.h
@@ -10,9 +10,10 @@
 #define FORTRAN_COMMON_CONSTEXPR_BITSET_H_
 
 // Implements a replacement for std::bitset<> that is suitable for use
-// in constexpr expressions.  Limited to elements in [0..63].
+// in constexpr expressions.  Limited to elements in [0..127].
 
 #include "bit-population-count.h"
+#include "uint128.h"
 #include <cstddef>
 #include <cstdint>
 #include <initializer_list>
@@ -22,9 +23,10 @@
 namespace Fortran::common {
 
 template <int BITS> class BitSet {
-  static_assert(BITS > 0 && BITS <= 64);
-  static constexpr bool partialWord{BITS != 32 && BITS != 64};
-  using Word = std::conditional_t<(BITS > 32), std::uint64_t, std::uint32_t>;
+  static_assert(BITS > 0 && BITS <= 128);
+  static constexpr bool partialWord{BITS != 32 && BITS != 64 && BITS != 128};
+  using Word = std::conditional_t<(BITS > 64), uint128_t,
+      std::conditional_t<(BITS > 32), std::uint64_t, std::uint32_t>>;
   static constexpr Word allBits{
       partialWord ? (static_cast<Word>(1) << BITS) - 1 : ~static_cast<Word>(0)};
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D120848.412538.patch
Type: text/x-patch
Size: 1254 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20220302/3ec49f0f/attachment.bin>


More information about the flang-commits mailing list