diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h
index 1ca1d66..9bc928b 100644
--- a/Eigen/src/Core/util/Macros.h
+++ b/Eigen/src/Core/util/Macros.h
@@ -194,6 +194,12 @@
   #define EIGEN_ARCH_PPC 0
 #endif
 
+/// \internal EIGEN_ARCH_HEXAGON set to 1 if the architecture is Hexagon
+#ifdef __HEXAGON_ARCH__
+  #define EIGEN_ARCH_HEXAGON 1
+#else
+  #define EIGEN_ARCH_HEXAGON 0
+#endif
 
 
 // Operating system identification, EIGEN_OS_*
@@ -334,15 +340,16 @@
 #endif
 
 // Do we support r-value references?
-#if (__has_feature(cxx_rvalue_references) || \
+#if ((__has_feature(cxx_rvalue_references) || \
     (defined(__cplusplus) && __cplusplus >= 201103L) || \
      defined(__GXX_EXPERIMENTAL_CXX0X__) || \
-    (EIGEN_COMP_MSVC >= 1600))
+    (EIGEN_COMP_MSVC >= 1600)) && (!defined(EIGEN_ARCH_HEXAGON)))
   #define EIGEN_HAVE_RVALUE_REFERENCES
 #endif
 
 // Does the compiler support result_of?
-#if (__has_feature(cxx_lambdas) || (defined(__cplusplus) && __cplusplus >= 201103L))
+#if ((__has_feature(cxx_lambdas) || (defined(__cplusplus) && __cplusplus >= 201103L)) && \
+    (!defined(EIGEN_ARCH_HEXAGON)))
 #define EIGEN_HAS_STD_RESULT_OF 1
 #endif
 
