A few cleanups to threaded product code and test.
diff --git a/Eigen/src/Core/products/Parallelizer.h b/Eigen/src/Core/products/Parallelizer.h
index 667fea2..018efa6 100644
--- a/Eigen/src/Core/products/Parallelizer.h
+++ b/Eigen/src/Core/products/Parallelizer.h
@@ -71,7 +71,7 @@
 // TODO(rmlarsen): Make the device API available instead of
 // storing a local static pointer variable to avoid this issue.
 inline ThreadPool* setGemmThreadPool(ThreadPool* new_pool) {
-  static ThreadPool* pool;
+  static ThreadPool* pool = nullptr;
   if (new_pool != nullptr) {
     // This will wait for work in all threads in *pool to finish,
     // then destroy the old ThreadPool, and then replace it with new_pool.
@@ -232,7 +232,6 @@
   }
 
 #elif defined(EIGEN_GEMM_THREADPOOL)
-  ei_declare_aligned_stack_constructed_variable(GemmParallelTaskInfo<Index>, meta_info, threads, 0);
   Barrier barrier(threads);
   auto task = [=, &func, &barrier, &task_info](int i) {
     Index actual_threads = threads;
diff --git a/test/product_threaded.cpp b/test/product_threaded.cpp
index 1eb38fb..1782c28 100644
--- a/test/product_threaded.cpp
+++ b/test/product_threaded.cpp
@@ -19,6 +19,7 @@
   c.noalias() = a * b;
 
   ThreadPool pool(num_threads);
+  Eigen::setGemmThreadPool(&pool);
   MatrixXf c_threaded(n, n);
   c_threaded.noalias() = a * b;