more product refactoring
diff --git a/test/nomalloc.cpp b/test/nomalloc.cpp
index ee14ae0..a96bb23 100644
--- a/test/nomalloc.cpp
+++ b/test/nomalloc.cpp
@@ -65,7 +65,12 @@
   VERIFY_IS_APPROX((m1+m2)*s1,              s1*m1+s1*m2);
   VERIFY_IS_APPROX((m1+m2)(r,c), (m1(r,c))+(m2(r,c)));
   VERIFY_IS_APPROX(m1.cwise() * m1.block(0,0,rows,cols), m1.cwise() * m1);
-  VERIFY_IS_APPROX((m1*m1.transpose())*m2,  m1*(m1.transpose()*m2));
+  if (MatrixType::RowsAtCompileTime<EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD) {
+    // If the matrices are too large, we have better to use the optimized GEMM
+    // routines which allocates temporaries. However, on some platforms
+    // these temporaries are allocated on the stack using alloca.
+    VERIFY_IS_APPROX((m1*m1.transpose())*m2,  m1*(m1.transpose()*m2));
+  }
 }
 
 void test_nomalloc()