Revert https://gitlab.com/libeigen/eigen/-/commit/040180078db70b8673932d7e5615920d64ceeaf5
diff --git a/Eigen/src/Core/EigenBase.h b/Eigen/src/Core/EigenBase.h
index 883e050..6d16700 100644
--- a/Eigen/src/Core/EigenBase.h
+++ b/Eigen/src/Core/EigenBase.h
@@ -109,24 +109,6 @@
   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DeviceWrapper<Derived, Device> device(Device& device);
   template <typename Device>
   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DeviceWrapper<const Derived, Device> device(Device& device) const;
-
-  /**
-   * By defining the empty destructor here, subclasses which override the destructor with `~SubClass = default` will not
-   * inline their destructor.  This ensures ensures the destructor symbol will exists in the binary.
-   * This is needed to support expression evaluation in lldb (for _some_ reason).  Without this hack, the destructor
-   * will be inlined and lldb will produce a missing symbol error (referring to eg ~MatrixBase destructor) when trying
-   * to evaluate an expression that returns an Eigen::Matrix.
-   *
-   * We use the normal default destructor to make the object trivially destructible when not debugging or when testing
-   * as the testsuite asserts std::is_trivially_destructible
-   */
-#if !defined(EIGEN_NO_DEBUG) && !defined(EIGEN_TESTING_PLAINOBJECT_CTOR)
-#if __cpp_constexpr >= 201907L
-  EIGEN_DEVICE_FUNC constexpr ~EigenBase() {}
-#else
-  EIGEN_DEVICE_FUNC ~EigenBase() {}
-#endif
-#endif
 };
 
 /***************************************************************************