Files
allwpilib/upstream_utils/eigen_patches/0004-Fix-compilation-failures-on-constexpr-matrices-with-.patch

49 lines
2.2 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Tue, 14 May 2024 14:53:02 -0700
Subject: [PATCH 4/4] Fix compilation failures on constexpr matrices with GCC
14
DenseBase must have a trivial default constructor.
`constexpr DenseBase() {}` is not sufficient.
---
Eigen/src/Core/DenseBase.h | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/Eigen/src/Core/DenseBase.h b/Eigen/src/Core/DenseBase.h
index 5ab54efa3d8d454b2d5e02cb9d6145a723683b91..297c42679d978c36388ccba5831dab6624b6cb92 100644
--- a/Eigen/src/Core/DenseBase.h
+++ b/Eigen/src/Core/DenseBase.h
@@ -621,20 +621,20 @@ class DenseBase
protected:
EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase)
/** Default constructor. Do nothing. */
- EIGEN_DEVICE_FUNC constexpr DenseBase() {
- /* Just checks for self-consistency of the flags.
- * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
- */
#ifdef EIGEN_INTERNAL_DEBUGGING
- EIGEN_STATIC_ASSERT(
- (internal::check_implication(MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1, int(IsRowMajor)) &&
- internal::check_implication(MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1, int(!IsRowMajor))),
- INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)
+ EIGEN_DEVICE_FUNC constexpr DenseBase(){
+ /* Just checks for self-consistency of the flags.
+ * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
+ */
+ EIGEN_STATIC_ASSERT(
+ (internal::check_implication(MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1, int(IsRowMajor)) &&
+ internal::check_implication(MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1, int(!IsRowMajor))),
+ INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)}
+#else
+ EIGEN_DEVICE_FUNC constexpr DenseBase() = default;
#endif
- }
- private:
- EIGEN_DEVICE_FUNC explicit DenseBase(int);
+ private : EIGEN_DEVICE_FUNC explicit DenseBase(int);
EIGEN_DEVICE_FUNC DenseBase(int, int);
template <typename OtherDerived>
EIGEN_DEVICE_FUNC explicit DenseBase(const DenseBase<OtherDerived>&);