Add missing declarations for explicit instantiations.
The current behaviour (using externally defined instantiations without having seen a declaration of those external instantiations) is undesirable and effectively deprecated, and is warned about by -Wundefined-func-template.
PiperOrigin-RevId: 270769585
diff --git a/tensorflow/stream_executor/plugin_registry.h b/tensorflow/stream_executor/plugin_registry.h
index 4b2b2f9..7e4407d 100644
--- a/tensorflow/stream_executor/plugin_registry.h
+++ b/tensorflow/stream_executor/plugin_registry.h
@@ -161,12 +161,16 @@
};
// Explicit specializations are defined in plugin_registry.cc.
-#define DECLARE_PLUGIN_SPECIALIZATIONS(FACTORY_TYPE) \
- template <> \
- port::StatusOr<PluginRegistry::FACTORY_TYPE> PluginRegistry::GetFactory( \
- Platform::Id platform_id, PluginId plugin_id); \
- template <> \
- port::StatusOr<PluginRegistry::FACTORY_TYPE> PluginRegistry::GetFactory( \
+#define DECLARE_PLUGIN_SPECIALIZATIONS(FACTORY_TYPE) \
+ template <> \
+ port::Status PluginRegistry::RegisterFactory<PluginRegistry::FACTORY_TYPE>( \
+ Platform::Id platform_id, PluginId plugin_id, const string& name, \
+ PluginRegistry::FACTORY_TYPE factory); \
+ template <> \
+ port::StatusOr<PluginRegistry::FACTORY_TYPE> PluginRegistry::GetFactory( \
+ Platform::Id platform_id, PluginId plugin_id); \
+ template <> \
+ port::StatusOr<PluginRegistry::FACTORY_TYPE> PluginRegistry::GetFactory( \
PlatformKind platform_kind, PluginId plugin_id)
DECLARE_PLUGIN_SPECIALIZATIONS(BlasFactory);