Use dereference instead of implicit conversion for IndexedValue to Value*.
authorJacques Pienaar <jpienaar@google.com>
Wed, 27 Mar 2019 18:36:36 +0000 (11:36 -0700)
committerjpienaar <jpienaar@google.com>
Sat, 30 Mar 2019 00:45:56 +0000 (17:45 -0700)
Avoids ambiguous constructor error on some compilers.

PiperOrigin-RevId: 240606838

mlir/include/mlir/EDSC/Helpers.h
mlir/test/EDSC/builder-api-test.cpp

index 8fc9072..5dfc959 100644 (file)
@@ -157,7 +157,7 @@ template <typename Load, typename Store> struct TemplatedIndexedValue {
   }
 
   /// Emits a `load` when converting to a Value*.
-  operator Value *() const {
+  Value *operator*(void)const {
     return Load(getBase(), {indices.begin(), indices.end()}).getValue();
   }
 
index 2306ac2..ec8ceb4 100644 (file)
@@ -444,7 +444,7 @@ TEST_FUNC(select_op) {
     // Without it, one must force conversion to ValueHandle as such:
     //   edsc::intrinsics::select(
     //      i == zero, ValueHandle(A(zero, zero)), ValueHandle(ValueA(i, j)))
-    edsc::intrinsics::select(i == zero, A(zero, zero), A(i, j))
+    edsc::intrinsics::select(i == zero, *A(zero, zero), *A(i, j))
   });
 
   // CHECK-LABEL: @select_op