[PATCH] D86410: [flang][msvc] Avoid ambiguous overload from base class. NFC.

Michael Kruse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 24 11:57:56 PDT 2020


Meinersbur updated this revision to Diff 287460.
Meinersbur added a comment.

Use explicit method specializations in base class.

This solution is also accepted by msvc. A specialization TypeParamInquiry<16> is needed as well, otherwise it does not compiler.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86410/new/

https://reviews.llvm.org/D86410

Files:
  flang/include/flang/Evaluate/traverse.h


Index: flang/include/flang/Evaluate/traverse.h
===================================================================
--- flang/include/flang/Evaluate/traverse.h
+++ flang/include/flang/Evaluate/traverse.h
@@ -120,9 +120,27 @@
       return visitor_(x.GetFirstSymbol());
     }
   }
-  template <int KIND> Result operator()(const TypeParamInquiry<KIND> &x) const {
+
+  // Workaround for compilation with msvc. The compiler has difficulty
+  // prioritizing templated method imported with the using-declaration in
+  // derived classes. Therefore, instead of a templated method, declare all
+  // parameter specializations.
+  Result operator()(const TypeParamInquiry<1> &x) const {
+    return visitor_(x.base());
+  }
+  Result operator()(const TypeParamInquiry<2> &x) const {
+    return visitor_(x.base());
+  }
+  Result operator()(const TypeParamInquiry<4> &x) const {
     return visitor_(x.base());
   }
+  Result operator()(const TypeParamInquiry<8> &x) const {
+    return visitor_(x.base());
+  }
+  Result operator()(const TypeParamInquiry<16> &x) const {
+    return visitor_(x.base());
+  }
+
   Result operator()(const Triplet &x) const {
     return Combine(x.lower(), x.upper(), x.stride());
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D86410.287460.patch
Type: text/x-patch
Size: 1211 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200824/68cdc394/attachment.bin>


More information about the llvm-commits mailing list