Add IWYU export pragmas to top-level headers.
diff --git a/Eigen/AccelerateSupport b/Eigen/AccelerateSupport
index 8cee7ac..e16f36b 100644
--- a/Eigen/AccelerateSupport
+++ b/Eigen/AccelerateSupport
@@ -43,7 +43,9 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/AccelerateSupport/AccelerateSupport.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/Cholesky b/Eigen/Cholesky
index 2c686f1..4211151 100644
--- a/Eigen/Cholesky
+++ b/Eigen/Cholesky
@@ -29,12 +29,14 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/Cholesky/LLT.h"
 #include "src/Cholesky/LDLT.h"
 #ifdef EIGEN_USE_LAPACKE
 #include "src/misc/lapacke_helpers.h"
 #include "src/Cholesky/LLT_LAPACKE.h"
 #endif
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/CholmodSupport b/Eigen/CholmodSupport
index 1037bd5..2ccb211 100644
--- a/Eigen/CholmodSupport
+++ b/Eigen/CholmodSupport
@@ -40,7 +40,9 @@
   *
   */
 
+// IWYU pragma: begin_exports
 #include "src/CholmodSupport/CholmodSupport.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/Core b/Eigen/Core
index 631d3df..c4bde63 100644
--- a/Eigen/Core
+++ b/Eigen/Core
@@ -163,6 +163,7 @@
   #endif
 #endif
 
+// IWYU pragma: begin_exports
 #include "src/Core/util/Constants.h"
 #include "src/Core/util/Meta.h"
 #include "src/Core/util/Assert.h"
@@ -398,6 +399,7 @@
 #endif
 
 #include "src/Core/GlobalFunctions.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/Eigenvalues b/Eigen/Eigenvalues
index 5467a2e..97c526d 100644
--- a/Eigen/Eigenvalues
+++ b/Eigen/Eigenvalues
@@ -33,6 +33,8 @@
   */
 
 #include "src/misc/RealSvd2x2.h"
+
+// IWYU pragma: begin_exports
 #include "src/Eigenvalues/Tridiagonalization.h"
 #include "src/Eigenvalues/RealSchur.h"
 #include "src/Eigenvalues/EigenSolver.h"
@@ -54,6 +56,7 @@
 #include "src/Eigenvalues/ComplexSchur_LAPACKE.h"
 #include "src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h"
 #endif
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/Geometry b/Eigen/Geometry
index bc78110..0a733c5 100644
--- a/Eigen/Geometry
+++ b/Eigen/Geometry
@@ -33,9 +33,9 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/Geometry/OrthoMethods.h"
 #include "src/Geometry/EulerAngles.h"
-
 #include "src/Geometry/Homogeneous.h"
 #include "src/Geometry/RotationBase.h"
 #include "src/Geometry/Rotation2D.h"
@@ -53,6 +53,7 @@
 #if (defined EIGEN_VECTORIZE_SSE) || (defined EIGEN_VECTORIZE_NEON)
 #include "src/Geometry/arch/Geometry_SIMD.h"
 #endif
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/Householder b/Eigen/Householder
index f2fa799..0f7f9b3 100644
--- a/Eigen/Householder
+++ b/Eigen/Householder
@@ -20,9 +20,11 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/Householder/Householder.h"
 #include "src/Householder/HouseholderSequence.h"
 #include "src/Householder/BlockHouseholder.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/IterativeLinearSolvers b/Eigen/IterativeLinearSolvers
index 26a0560..833189b 100644
--- a/Eigen/IterativeLinearSolvers
+++ b/Eigen/IterativeLinearSolvers
@@ -34,6 +34,7 @@
     \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/IterativeLinearSolvers/SolveWithGuess.h"
 #include "src/IterativeLinearSolvers/IterativeSolverBase.h"
 #include "src/IterativeLinearSolvers/BasicPreconditioners.h"
@@ -42,6 +43,7 @@
 #include "src/IterativeLinearSolvers/BiCGSTAB.h"
 #include "src/IterativeLinearSolvers/IncompleteLUT.h"
 #include "src/IterativeLinearSolvers/IncompleteCholesky.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/Jacobi b/Eigen/Jacobi
index 43edc7a..490a6a8 100644
--- a/Eigen/Jacobi
+++ b/Eigen/Jacobi
@@ -24,7 +24,9 @@
   *  - MatrixBase::applyOnTheRight().
   */
 
+// IWYU pragma: begin_exports
 #include "src/Jacobi/Jacobi.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/KLUSupport b/Eigen/KLUSupport
index b23d905..5c8f8a3 100644
--- a/Eigen/KLUSupport
+++ b/Eigen/KLUSupport
@@ -8,9 +8,9 @@
 #ifndef EIGEN_KLUSUPPORT_MODULE_H
 #define EIGEN_KLUSUPPORT_MODULE_H
 
-#include <Eigen/SparseCore>
+#include "SparseCore"
 
-#include <Eigen/src/Core/util/DisableStupidWarnings.h>
+#include "src/Core/util/DisableStupidWarnings.h"
 
 extern "C" {
 #include <btf.h>
@@ -34,8 +34,10 @@
   *
   */
 
+// IWYU pragma: begin_exports
 #include "src/KLUSupport/KLUSupport.h"
+// IWYU pragma: end_exports
 
-#include <Eigen/src/Core/util/ReenableStupidWarnings.h>
+#include "src/Core/util/ReenableStupidWarnings.h"
 
 #endif // EIGEN_KLUSUPPORT_MODULE_H
diff --git a/Eigen/LU b/Eigen/LU
index b7f9a8a..49d7b91 100644
--- a/Eigen/LU
+++ b/Eigen/LU
@@ -25,6 +25,8 @@
 
 #include "src/misc/Kernel.h"
 #include "src/misc/Image.h"
+
+// IWYU pragma: begin_exports
 #include "src/LU/FullPivLU.h"
 #include "src/LU/PartialPivLU.h"
 #ifdef EIGEN_USE_LAPACKE
@@ -37,6 +39,7 @@
 #if defined EIGEN_VECTORIZE_SSE || defined EIGEN_VECTORIZE_NEON
   #include "src/LU/arch/InverseSize4.h"
 #endif
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/MetisSupport b/Eigen/MetisSupport
index 85c41bf..e74c3bb 100644
--- a/Eigen/MetisSupport
+++ b/Eigen/MetisSupport
@@ -27,8 +27,9 @@
   * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink
   */
 
-
+// IWYU pragma: begin_exports
 #include "src/MetisSupport/MetisSupport.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/OrderingMethods b/Eigen/OrderingMethods
index 29691a6..5031de7 100644
--- a/Eigen/OrderingMethods
+++ b/Eigen/OrderingMethods
@@ -63,8 +63,11 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/OrderingMethods/Amd.h"
 #include "src/OrderingMethods/Ordering.h"
+// IWYU pragma: end_exports
+
 #include "src/Core/util/ReenableStupidWarnings.h"
 
 #endif // EIGEN_ORDERINGMETHODS_MODULE_H
diff --git a/Eigen/PaStiXSupport b/Eigen/PaStiXSupport
index 234619a..5d3cb38 100644
--- a/Eigen/PaStiXSupport
+++ b/Eigen/PaStiXSupport
@@ -42,7 +42,9 @@
   *
   */
 
+// IWYU pragma: begin_exports
 #include "src/PaStiXSupport/PaStiXSupport.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/PardisoSupport b/Eigen/PardisoSupport
index 340edf5..c022ce1 100644
--- a/Eigen/PardisoSupport
+++ b/Eigen/PardisoSupport
@@ -28,7 +28,9 @@
   * 
   */
 
+// IWYU pragma: begin_exports
 #include "src/PardisoSupport/PardisoSupport.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/QR b/Eigen/QR
index 1f6c22e..2f57a60 100644
--- a/Eigen/QR
+++ b/Eigen/QR
@@ -31,6 +31,7 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/QR/HouseholderQR.h"
 #include "src/QR/FullPivHouseholderQR.h"
 #include "src/QR/ColPivHouseholderQR.h"
@@ -40,6 +41,7 @@
 #include "src/QR/HouseholderQR_LAPACKE.h"
 #include "src/QR/ColPivHouseholderQR_LAPACKE.h"
 #endif
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/SPQRSupport b/Eigen/SPQRSupport
index d83495e..a25f5ef 100644
--- a/Eigen/SPQRSupport
+++ b/Eigen/SPQRSupport
@@ -29,6 +29,11 @@
   */
 
 #include "CholmodSupport"
+
+// IWYU pragma: begin_exports
 #include "src/SPQRSupport/SuiteSparseQRSupport.h"
+// IWYU pragma: end_exports
+
+#include "src/Core/util/ReenableStupidWarnings.h"
 
 #endif
diff --git a/Eigen/SVD b/Eigen/SVD
index 8241c73..b13ec2f 100644
--- a/Eigen/SVD
+++ b/Eigen/SVD
@@ -31,6 +31,7 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/misc/RealSvd2x2.h"
 #include "src/SVD/UpperBidiagonalization.h"
 #include "src/SVD/SVDBase.h"
@@ -47,6 +48,7 @@
 #endif
 #include "src/SVD/BDCSVD_LAPACKE.h"
 #endif
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/SparseCholesky b/Eigen/SparseCholesky
index d2b1f12..967196f 100644
--- a/Eigen/SparseCholesky
+++ b/Eigen/SparseCholesky
@@ -30,8 +30,11 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/SparseCholesky/SimplicialCholesky.h"
 #include "src/SparseCholesky/SimplicialCholesky_impl.h"
+// IWYU pragma: end_exports
+
 #include "src/Core/util/ReenableStupidWarnings.h"
 
 #endif // EIGEN_SPARSECHOLESKY_MODULE_H
diff --git a/Eigen/SparseCore b/Eigen/SparseCore
index 352f1ec..292b089 100644
--- a/Eigen/SparseCore
+++ b/Eigen/SparseCore
@@ -34,6 +34,7 @@
   * This module depends on: Core.
   */
 
+// IWYU pragma: begin_exports
 #include "src/SparseCore/SparseUtil.h"
 #include "src/SparseCore/SparseMatrixBase.h"
 #include "src/SparseCore/SparseAssign.h"
@@ -62,6 +63,7 @@
 #include "src/SparseCore/SparsePermutation.h"
 #include "src/SparseCore/SparseFuzzy.h"
 #include "src/SparseCore/SparseSolverBase.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/SparseLU b/Eigen/SparseLU
index 047cf0d..9ec6ac7 100644
--- a/Eigen/SparseLU
+++ b/Eigen/SparseLU
@@ -25,6 +25,7 @@
 
 #include "src/Core/util/DisableStupidWarnings.h"
 
+// IWYU pragma: begin_exports
 #include "src/SparseLU/SparseLU_Structs.h"
 #include "src/SparseLU/SparseLU_SupernodalMatrix.h"
 #include "src/SparseLU/SparseLUImpl.h"
@@ -42,6 +43,7 @@
 #include "src/SparseLU/SparseLU_pruneL.h"
 #include "src/SparseLU/SparseLU_Utils.h"
 #include "src/SparseLU/SparseLU.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/SparseQR b/Eigen/SparseQR
index f5fc5fa..4bc144c 100644
--- a/Eigen/SparseQR
+++ b/Eigen/SparseQR
@@ -28,8 +28,10 @@
   * 
   */
 
+// IWYU pragma: begin_exports
 #include "src/SparseCore/SparseColEtree.h"
 #include "src/SparseQR/SparseQR.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/StdDeque b/Eigen/StdDeque
index bc68397..29550e2 100644
--- a/Eigen/StdDeque
+++ b/Eigen/StdDeque
@@ -20,7 +20,9 @@
 
 #else
 
+// IWYU pragma: begin_exports
 #include "src/StlSupport/StdDeque.h"
+// IWYU pragma: end_exports
 
 #endif
 
diff --git a/Eigen/StdList b/Eigen/StdList
index 4c6262c..8a22fc8 100644
--- a/Eigen/StdList
+++ b/Eigen/StdList
@@ -19,7 +19,9 @@
 
 #else
 
+// IWYU pragma: begin_exports
 #include "src/StlSupport/StdList.h"
+// IWYU pragma: end_exports
 
 #endif
 
diff --git a/Eigen/StdVector b/Eigen/StdVector
index 0c4697a..e68f6b5 100644
--- a/Eigen/StdVector
+++ b/Eigen/StdVector
@@ -20,7 +20,9 @@
 
 #else
 
+// IWYU pragma: begin_exports
 #include "src/StlSupport/StdVector.h"
+// IWYU pragma: end_exports
 
 #endif
 
diff --git a/Eigen/SuperLUSupport b/Eigen/SuperLUSupport
index 59312a8..33997fa 100644
--- a/Eigen/SuperLUSupport
+++ b/Eigen/SuperLUSupport
@@ -57,7 +57,9 @@
   *
   */
 
+// IWYU pragma: begin_exports
 #include "src/SuperLUSupport/SuperLUSupport.h"
+// IWYU pragma: end_exports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/Eigen/UmfPackSupport b/Eigen/UmfPackSupport
index 00eec80..eea150e 100644
--- a/Eigen/UmfPackSupport
+++ b/Eigen/UmfPackSupport
@@ -33,7 +33,9 @@
   *
   */
 
+// IWYU pragma: begin_exports
 #include "src/UmfPackSupport/UmfPackSupport.h"
+// IWYU pragma: endexports
 
 #include "src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/ArpackSupport b/unsupported/Eigen/ArpackSupport
index 67c4ac8..b89d8e9 100644
--- a/unsupported/Eigen/ArpackSupport
+++ b/unsupported/Eigen/ArpackSupport
@@ -23,7 +23,10 @@
 #include "../../Eigen/SparseCholesky"
 
 #include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
+
+// IWYU pragma: begin_exports
 #include "src/Eigenvalues/ArpackSelfAdjointEigenSolver.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/AutoDiff b/unsupported/Eigen/AutoDiff
index 62fc0b3..6372e8f 100644
--- a/unsupported/Eigen/AutoDiff
+++ b/unsupported/Eigen/AutoDiff
@@ -32,10 +32,11 @@
 }
 #include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
 
-
+// IWYU pragma: begin_exports
 #include "src/AutoDiff/AutoDiffScalar.h"
 // #include "src/AutoDiff/AutoDiffVector.h"
 #include "src/AutoDiff/AutoDiffJacobian.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/BVH b/unsupported/Eigen/BVH
index 666c983..136ec4d 100644
--- a/unsupported/Eigen/BVH
+++ b/unsupported/Eigen/BVH
@@ -87,8 +87,10 @@
 
 //@{
 
+// IWYU pragma: begin_exports
 #include "src/BVH/BVAlgorithms.h"
 #include "src/BVH/KdBVH.h"
+// IWYU pragma: end_exports
 
 //@}
 
diff --git a/unsupported/Eigen/CXX11/Tensor b/unsupported/Eigen/CXX11/Tensor
index 0a04a0e..98e0918 100644
--- a/unsupported/Eigen/CXX11/Tensor
+++ b/unsupported/Eigen/CXX11/Tensor
@@ -16,8 +16,11 @@
 #include "../SpecialFunctions"
 
 #include "../../../Eigen/src/Core/util/DisableStupidWarnings.h"
+
+// IWYU pragma: begin_exports
 #include "src/util/CXX11Meta.h"
 #include "src/util/MaxSizeVector.h"
+// IWYU pragma: end_exports
 
 /** \defgroup CXX11_Tensor_Module Tensor Module
   *
@@ -54,6 +57,7 @@
   #endif
 #endif
 
+// IWYU pragma: begin_exports
 #include "src/Tensor/TensorMacros.h"
 #include "src/Tensor/TensorForwardDeclarations.h"
 #include "src/Tensor/TensorMeta.h"
@@ -130,8 +134,7 @@
 #include "src/Tensor/TensorFixedSize.h"
 #include "src/Tensor/TensorMap.h"
 #include "src/Tensor/TensorRef.h"
-
-
+// IWYU pragma: end_exports
 
 #include "../../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/CXX11/TensorSymmetry b/unsupported/Eigen/CXX11/TensorSymmetry
index a5c9609..f559c26 100644
--- a/unsupported/Eigen/CXX11/TensorSymmetry
+++ b/unsupported/Eigen/CXX11/TensorSymmetry
@@ -28,10 +28,12 @@
   * \endcode
   */
 
+// IWYU pragma: begin_exports
 #include "src/TensorSymmetry/util/TemplateGroupTheory.h"
 #include "src/TensorSymmetry/Symmetry.h"
 #include "src/TensorSymmetry/StaticSymmetry.h"
 #include "src/TensorSymmetry/DynamicSymmetry.h"
+// IWYU pragma: end_exports
 
 #include "../../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/CXX11/ThreadPool b/unsupported/Eigen/CXX11/ThreadPool
index 6ebe9e7..041ba07 100644
--- a/unsupported/Eigen/CXX11/ThreadPool
+++ b/unsupported/Eigen/CXX11/ThreadPool
@@ -56,6 +56,7 @@
 #include "src/util/CXX11Meta.h"
 #include "src/util/MaxSizeVector.h"
 
+// IWYU pragma: begin_exports
 #include "src/ThreadPool/ThreadLocal.h"
 #include "src/ThreadPool/ThreadYield.h"
 #include "src/ThreadPool/ThreadCancel.h"
@@ -65,6 +66,7 @@
 #include "src/ThreadPool/ThreadEnvironment.h"
 #include "src/ThreadPool/Barrier.h"
 #include "src/ThreadPool/NonBlockingThreadPool.h"
+// IWYU pragma: end_exports
 
 #include "../../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/EulerAngles b/unsupported/Eigen/EulerAngles
index f8f1c5d..3e4c74b 100644
--- a/unsupported/Eigen/EulerAngles
+++ b/unsupported/Eigen/EulerAngles
@@ -35,8 +35,10 @@
 
 }
 
+// IWYU pragma: begin_exports
 #include "src/EulerAngles/EulerSystem.h"
 #include "src/EulerAngles/EulerAngles.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/FFT b/unsupported/Eigen/FFT
index b929e84..137b962 100644
--- a/unsupported/Eigen/FFT
+++ b/unsupported/Eigen/FFT
@@ -79,6 +79,8 @@
 
 #include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
 
+// IWYU pragma: begin_exports
+
 #ifdef EIGEN_FFTW_DEFAULT
 // FFTW: faster, GPL -- incompatible with Eigen in LGPL form, bigger code size
 #  include <fftw3.h>
@@ -110,6 +112,8 @@
   }
 #endif
 
+// IWYU pragma: end_exports
+
 namespace Eigen {
 
  
diff --git a/unsupported/Eigen/IterativeSolvers b/unsupported/Eigen/IterativeSolvers
index 9611a99..5800e09 100644
--- a/unsupported/Eigen/IterativeSolvers
+++ b/unsupported/Eigen/IterativeSolvers
@@ -78,6 +78,7 @@
 
 #include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
 
+// IWYU pragma: begin_exports
 #include "src/IterativeSolvers/IncompleteLU.h"
 #include "src/IterativeSolvers/GMRES.h"
 #include "src/IterativeSolvers/DGMRES.h"
@@ -85,6 +86,7 @@
 #include "src/IterativeSolvers/IDRS.h"
 #include "src/IterativeSolvers/BiCGSTABL.h"
 #include "src/IterativeSolvers/IDRSTABL.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/KroneckerProduct b/unsupported/Eigen/KroneckerProduct
index 9643ae2..0dcb995 100644
--- a/unsupported/Eigen/KroneckerProduct
+++ b/unsupported/Eigen/KroneckerProduct
@@ -26,7 +26,9 @@
 
 } // namespace Eigen
 
+// IWYU pragma: begin_exports
 #include "src/KroneckerProduct/KroneckerTensorProduct.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/LevenbergMarquardt b/unsupported/Eigen/LevenbergMarquardt
index b5ace56..96d1e67 100644
--- a/unsupported/Eigen/LevenbergMarquardt
+++ b/unsupported/Eigen/LevenbergMarquardt
@@ -33,16 +33,16 @@
 
 #include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
 
+// IWYU pragma: begin_exports
 #ifndef EIGEN_PARSED_BY_DOXYGEN
-
 #include "src/LevenbergMarquardt/LMqrsolv.h"
 #include "src/LevenbergMarquardt/LMcovar.h"
 #include "src/LevenbergMarquardt/LMpar.h"
-
 #endif
 
 #include "src/LevenbergMarquardt/LevenbergMarquardt.h"
 #include "src/LevenbergMarquardt/LMonestep.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/MatrixFunctions b/unsupported/Eigen/MatrixFunctions
index dddedb4..f46df5d 100644
--- a/unsupported/Eigen/MatrixFunctions
+++ b/unsupported/Eigen/MatrixFunctions
@@ -55,11 +55,13 @@
 
 #include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
 
+// IWYU pragma: begin_exports
 #include "src/MatrixFunctions/MatrixExponential.h"
 #include "src/MatrixFunctions/MatrixFunction.h"
 #include "src/MatrixFunctions/MatrixSquareRoot.h"
 #include "src/MatrixFunctions/MatrixLogarithm.h"
 #include "src/MatrixFunctions/MatrixPower.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/MoreVectorization b/unsupported/Eigen/MoreVectorization
index 7662b47..ea86fac 100644
--- a/unsupported/Eigen/MoreVectorization
+++ b/unsupported/Eigen/MoreVectorization
@@ -19,6 +19,8 @@
 
 }
 
+// IWYU pragma: begin_exports
 #include "src/MoreVectorization/MathFunctions.h"
+// IWYU pragma: end_exports
 
 #endif // EIGEN_MOREVECTORIZATION_MODULE_H
diff --git a/unsupported/Eigen/NonLinearOptimization b/unsupported/Eigen/NonLinearOptimization
index 6bf566e..929c503 100644
--- a/unsupported/Eigen/NonLinearOptimization
+++ b/unsupported/Eigen/NonLinearOptimization
@@ -118,6 +118,7 @@
   * unsupported/test/NonLinearOptimization.cpp.
   */
 
+// IWYU pragma: begin_exports
 #ifndef EIGEN_PARSED_BY_DOXYGEN
 
 #include "src/NonLinearOptimization/qrsolv.h"
@@ -135,6 +136,6 @@
 
 #include "src/NonLinearOptimization/HybridNonLinearSolver.h"
 #include "src/NonLinearOptimization/LevenbergMarquardt.h"
-
+// IWYU pragma: end_exports
 
 #endif // EIGEN_NONLINEAROPTIMIZATION_MODULE_H
diff --git a/unsupported/Eigen/NumericalDiff b/unsupported/Eigen/NumericalDiff
index 9d6270a..542e51a 100644
--- a/unsupported/Eigen/NumericalDiff
+++ b/unsupported/Eigen/NumericalDiff
@@ -48,7 +48,9 @@
 
 //@{
 
+// IWYU pragma: begin_exports
 #include "src/NumericalDiff/NumericalDiff.h"
+// IWYU pragma: end_exports
 
 //@}
 
diff --git a/unsupported/Eigen/Polynomials b/unsupported/Eigen/Polynomials
index 32ce2a2..0df6fa1 100644
--- a/unsupported/Eigen/Polynomials
+++ b/unsupported/Eigen/Polynomials
@@ -35,9 +35,11 @@
 	* at the start of your source file.
   */
 
+// IWYU pragma: begin_exports
 #include "src/Polynomials/PolynomialUtils.h"
 #include "src/Polynomials/Companion.h"
 #include "src/Polynomials/PolynomialSolver.h"
+// IWYU pragma: end_exports
 
 /**
 	\page polynomials Polynomials defines functions for dealing with polynomials
diff --git a/unsupported/Eigen/Skyline b/unsupported/Eigen/Skyline
index ebdf143..7a9f0ca 100644
--- a/unsupported/Eigen/Skyline
+++ b/unsupported/Eigen/Skyline
@@ -27,12 +27,14 @@
  *
  */
 
+// IWYU pragma: begin_exports
 #include "src/Skyline/SkylineUtil.h"
 #include "src/Skyline/SkylineMatrixBase.h"
 #include "src/Skyline/SkylineStorage.h"
 #include "src/Skyline/SkylineMatrix.h"
 #include "src/Skyline/SkylineInplaceLU.h"
 #include "src/Skyline/SkylineProduct.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/SparseExtra b/unsupported/Eigen/SparseExtra
index f4920de..88a639e 100644
--- a/unsupported/Eigen/SparseExtra
+++ b/unsupported/Eigen/SparseExtra
@@ -41,7 +41,7 @@
   * \endcode
   */
 
-
+// IWYU pragma: begin_exports
 #include "src/SparseExtra/RandomSetter.h"
 #include "src/SparseExtra/SparseInverse.h"
 
@@ -51,6 +51,7 @@
 #include <dirent.h>
 #include "src/SparseExtra/MatrixMarketIterator.h"
 #endif
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
 
diff --git a/unsupported/Eigen/SpecialFunctions b/unsupported/Eigen/SpecialFunctions
index 41a3631..fb03db7 100644
--- a/unsupported/Eigen/SpecialFunctions
+++ b/unsupported/Eigen/SpecialFunctions
@@ -60,6 +60,7 @@
 
 }
 
+// IWYU pragma: begin_exports
 #include "src/SpecialFunctions/BesselFunctionsImpl.h"
 #include "src/SpecialFunctions/BesselFunctionsBFloat16.h"
 #include "src/SpecialFunctions/BesselFunctionsHalf.h"
@@ -92,6 +93,7 @@
 #if defined EIGEN_VECTORIZE_GPU
   #include "src/SpecialFunctions/arch/GPU/SpecialFunctions.h"
 #endif
+// IWYU pragma: end_exports
 
 namespace Eigen {
 //@}
diff --git a/unsupported/Eigen/Splines b/unsupported/Eigen/Splines
index 2ca5813..b4fc81e 100644
--- a/unsupported/Eigen/Splines
+++ b/unsupported/Eigen/Splines
@@ -26,9 +26,11 @@
 
 #include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
 
+// IWYU pragma: begin_exports
 #include "src/Splines/SplineFwd.h"
 #include "src/Splines/Spline.h"
 #include "src/Splines/SplineFitting.h"
+// IWYU pragma: end_exports
 
 #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"