[flang-commits] [flang] 79f8e90 - [flang] Avoid bogus warning from MSVC build

Peter Klausler via flang-commits flang-commits at lists.llvm.org
Wed Mar 2 15:23:54 PST 2022


Author: Peter Klausler
Date: 2022-03-02T15:23:45-08:00
New Revision: 79f8e909ed63deec10906f4033b771433e8104c0

URL: https://github.com/llvm/llvm-project/commit/79f8e909ed63deec10906f4033b771433e8104c0
DIFF: https://github.com/llvm/llvm-project/commit/79f8e909ed63deec10906f4033b771433e8104c0.diff

LOG: [flang] Avoid bogus warning from MSVC build

And expand common::BitSet from 64 to 128 maximum elements.

Differential Revision: https://reviews.llvm.org/D120848

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/flang/include/flang/Common/constexpr-bitset.h b/flang/include/flang/Common/constexpr-bitset.h
index f1f4682689099..1aafb6eff84c6 100644
--- a/flang/include/flang/Common/constexpr-bitset.h
+++ b/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,11 +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);
+  using Word = HostUnsignedIntType<(BITS <= 32 ? 32 : BITS)>;
   static constexpr Word allBits{
-      partialWord ? (static_cast<Word>(1) << BITS) - 1 : ~static_cast<Word>(0)};
+      ~static_cast<Word>(0) >> (8 * sizeof(Word) - BITS)};
 
   constexpr BitSet(Word b) : bits_{b} {}
 


        


More information about the flang-commits mailing list