Merge pie-platform-release to aosp-master - DO NOT MERGE

Change-Id: Ic6a000a75351f0a6cb063ef80abe945ff4e3a4bd
diff --git a/Eigen/src/Core/products/GeneralMatrixMatrix.h b/Eigen/src/Core/products/GeneralMatrixMatrix.h
index 6440e1d..41cfb0e 100644
--- a/Eigen/src/Core/products/GeneralMatrixMatrix.h
+++ b/Eigen/src/Core/products/GeneralMatrixMatrix.h
@@ -146,7 +146,6 @@
       // Release all the sub blocks A'_i of A' for the current thread,
       // i.e., we simply decrement the number of users by 1
       for(Index i=0; i<threads; ++i)
-        #pragma omp atomic
         info[i].users -= 1;
     }
   }
diff --git a/Eigen/src/Core/products/Parallelizer.h b/Eigen/src/Core/products/Parallelizer.h
index c2f084c..c0ddc0c 100644
--- a/Eigen/src/Core/products/Parallelizer.h
+++ b/Eigen/src/Core/products/Parallelizer.h
@@ -10,6 +10,8 @@
 #ifndef EIGEN_PARALLELIZER_H
 #define EIGEN_PARALLELIZER_H
 
+#include <atomic>
+
 namespace Eigen {
 
 namespace internal {
@@ -75,8 +77,8 @@
 {
   GemmParallelInfo() : sync(-1), users(0), lhs_start(0), lhs_length(0) {}
 
-  Index volatile sync;
-  int volatile users;
+  std::atomic<Index> sync;
+  std::atomic<int> users;
 
   Index lhs_start;
   Index lhs_length;