[mlir] use raw function pointer instead of std::function
authorAlex Zinenko <zinenko@google.com>
Tue, 11 Oct 2022 10:55:51 +0000 (10:55 +0000)
committerAlex Zinenko <zinenko@google.com>
Tue, 11 Oct 2022 10:56:31 +0000 (10:56 +0000)
Accessing the target of std::function apparently requires RTTI, use a
raw pointer instead.

mlir/include/mlir/Dialect/Transform/IR/TransformDialect.h
mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td

index 80ff80e..e386b35 100644 (file)
@@ -212,7 +212,7 @@ void TransformDialect::addTypeIfNotRegistered() {
   auto [it, inserted] = typeParsingHooks.try_emplace(mnemonic, Type::parse);
   if (!inserted) {
     const ExtensionTypeParsingHook &parsingHook = it->getValue();
-    if (*parsingHook.target<mlir::Type (*)(AsmParser &)>() != &Type::parse)
+    if (parsingHook != &Type::parse)
       reportDuplicateTypeRegistration(mnemonic);
     else
       return;
index bdb28f9..cf5072b 100644 (file)
@@ -324,8 +324,7 @@ def Transform_Dialect : Dialect {
 
       /// Parser callback for an individual type registered by this dialect or
       /// its extensions.
-      using ExtensionTypeParsingHook =
-          std::function<::mlir::Type (::mlir::AsmParser &)>;
+      using ExtensionTypeParsingHook = ::mlir::Type (*)(::mlir::AsmParser &);
 
       /// Printer callback for an individual type registered by this dialect or
       /// its extensions.