Revert "[MLIR] Use `llvm::is_one_of` in walk templates"
authorFrederik Gossen <frgossen@google.com>
Mon, 2 Nov 2020 16:10:59 +0000 (16:10 +0000)
committerFrederik Gossen <frgossen@google.com>
Mon, 2 Nov 2020 16:21:29 +0000 (16:21 +0000)
This reverts commit 56299b1e58bf3720dff2fe60163739ee1554a371.
Cannot build with gcc/g++ 7.5.0.

mlir/include/mlir/IR/Visitors.h

index 74aabbd..cf7b3fa 100644 (file)
@@ -92,8 +92,10 @@ WalkResult walk(Operation *op, function_ref<WalkResult(Operation *)> callback);
 template <
     typename FuncTy, typename ArgT = detail::first_argument<FuncTy>,
     typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
-typename std::enable_if<
-    llvm::is_one_of<ArgT, Operation *, Region *, Block *>::value, RetT>::type
+typename std::enable_if<std::is_same<ArgT, Operation *>::value ||
+                            std::is_same<ArgT, Region *>::value ||
+                            std::is_same<ArgT, Block *>::value,
+                        RetT>::type
 walk(Operation *op, FuncTy &&callback) {
   return walk(op, function_ref<RetT(ArgT)>(callback));
 }
@@ -107,10 +109,11 @@ walk(Operation *op, FuncTy &&callback) {
 template <
     typename FuncTy, typename ArgT = detail::first_argument<FuncTy>,
     typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
-typename std::enable_if<
-    !llvm::is_one_of<ArgT, Operation *, Region *, Block *>::value &&
-        std::is_same<RetT, void>::value,
-    RetT>::type
+typename std::enable_if<!std::is_same<ArgT, Operation *>::value &&
+                            !std::is_same<ArgT, Region *>::value &&
+                            !std::is_same<ArgT, Block *>::value &&
+                            std::is_same<RetT, void>::value,
+                        RetT>::type
 walk(Operation *op, FuncTy &&callback) {
   auto wrapperFn = [&](Operation *op) {
     if (auto derivedOp = dyn_cast<ArgT>(op))
@@ -132,10 +135,11 @@ walk(Operation *op, FuncTy &&callback) {
 template <
     typename FuncTy, typename ArgT = detail::first_argument<FuncTy>,
     typename RetT = decltype(std::declval<FuncTy>()(std::declval<ArgT>()))>
-typename std::enable_if<
-    !llvm::is_one_of<ArgT, Operation *, Region *, Block *>::value &&
-        std::is_same<RetT, WalkResult>::value,
-    RetT>::type
+typename std::enable_if<!std::is_same<ArgT, Operation *>::value &&
+                            !std::is_same<ArgT, Region *>::value &&
+                            !std::is_same<ArgT, Block *>::value &&
+                            std::is_same<RetT, WalkResult>::value,
+                        RetT>::type
 walk(Operation *op, FuncTy &&callback) {
   auto wrapperFn = [&](Operation *op) {
     if (auto derivedOp = dyn_cast<ArgT>(op))