diff --git a/mlir/include/mlir/Dialect/SDBM/SDBMDialect.h b/mlir/include/mlir/Dialect/SDBM/SDBMDialect.h
--- a/mlir/include/mlir/Dialect/SDBM/SDBMDialect.h
+++ b/mlir/include/mlir/Dialect/SDBM/SDBMDialect.h
@@ -19,6 +19,11 @@
 public:
   SDBMDialect(MLIRContext *context) : Dialect(getDialectNamespace(), context) {}
 
+  /// Since there are no other virtual methods in this derived class, override
+  /// the destructor so that key methods get defined in the corresponding
+  /// module.
+  ~SDBMDialect() override;
+
   static StringRef getDialectNamespace() { return "sdbm"; }
 
   /// Get the uniquer for SDBM expressions. This should not be used directly.
diff --git a/mlir/lib/Dialect/SDBM/CMakeLists.txt b/mlir/lib/Dialect/SDBM/CMakeLists.txt
--- a/mlir/lib/Dialect/SDBM/CMakeLists.txt
+++ b/mlir/lib/Dialect/SDBM/CMakeLists.txt
@@ -1,5 +1,6 @@
 add_mlir_dialect_library(MLIRSDBM
   SDBM.cpp
+  SDBMDialect.cpp
   SDBMExpr.cpp
 
   ADDITIONAL_HEADER_DIRS
diff --git a/mlir/lib/Dialect/SDBM/SDBMDialect.cpp b/mlir/lib/Dialect/SDBM/SDBMDialect.cpp
new file mode 100644
--- /dev/null
+++ b/mlir/lib/Dialect/SDBM/SDBMDialect.cpp
@@ -0,0 +1,13 @@
+//===- SDBMDialect.cpp - MLIR SDBM Dialect --------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "mlir/Dialect/SDBM/SDBMDialect.h"
+
+using namespace mlir;
+
+SDBMDialect::~SDBMDialect() = default;