[flang][msvc] Avoid range-based for over initializer_list. NFC.
authorMichael Kruse <llvm-project@meinersbur.de>
Wed, 9 Sep 2020 02:52:23 +0000 (21:52 -0500)
committerMichael Kruse <llvm-project@meinersbur.de>
Wed, 9 Sep 2020 05:22:36 +0000 (00:22 -0500)
Msvc crashes with "INTERNAL COMPILER ERROR" when iterating over an `std::initializer_list` in a constexpr constructor. Explicitly use the iterator instead.

This patch is part of the series to [[ http://lists.llvm.org/pipermail/flang-dev/2020-July/000448.html | make flang compilable with MS Visual Studio ]].

Reviewed By: isuruf

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

flang/include/flang/Common/enum-set.h

index a7bdc75..5d2eda5 100644 (file)
@@ -37,8 +37,8 @@ public:
 
   constexpr EnumSet() {}
   constexpr EnumSet(const std::initializer_list<enumerationType> &enums) {
-    for (auto x : enums) {
-      set(x);
+    for (auto it{enums.begin()}; it != enums.end(); ++it) {
+      set(*it);
     }
   }
   constexpr EnumSet(const EnumSet &) = default;