diff --git a/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h b/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h --- a/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h +++ b/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// // // This file declares basic classes and functions to manipulate structured MLIR -// types at runtime. Entities in this file are must be retargetable, including -// on targets without a C++ runtime. +// types at runtime. Entities in this file must be compliant with C++11 and be +// retargetable, including on targets without a C++ runtime. // //===----------------------------------------------------------------------===// @@ -45,9 +45,7 @@ constexpr bool isPowerOf2(int N) { return (!(N & (N - 1))); } constexpr unsigned nextPowerOf2(int N) { - if (N <= 1) - return 1; - return isPowerOf2(N) ? N : 2 * nextPowerOf2((N + 1) / 2); + return (N <= 1) ? 1 : (isPowerOf2(N) ? N : (2 * nextPowerOf2((N + 1) / 2))); } template @@ -59,8 +57,8 @@ static_assert(detail::nextPowerOf2(sizeof(T[Dim])) == sizeof(T[Dim]), "size error"); } - constexpr T &operator[](unsigned i) { return vector[i]; } - constexpr const T &operator[](unsigned i) const { return vector[i]; } + inline T &operator[](unsigned i) { return vector[i]; } + inline const T &operator[](unsigned i) const { return vector[i]; } private: T vector[Dim]; @@ -76,8 +74,8 @@ static_assert(detail::nextPowerOf2(sizeof(T[Dim])) < 2 * sizeof(T[Dim]), "size error"); } - constexpr T &operator[](unsigned i) { return vector[i]; } - constexpr const T &operator[](unsigned i) const { return vector[i]; } + inline T &operator[](unsigned i) { return vector[i]; } + inline const T &operator[](unsigned i) const { return vector[i]; } private: T vector[Dim]; @@ -88,8 +86,8 @@ // N-D vectors recurse down to 1-D. template struct Vector { - constexpr Vector &operator[](unsigned i) { return vector[i]; } - constexpr const Vector &operator[](unsigned i) const { + inline Vector &operator[](unsigned i) { return vector[i]; } + inline const Vector &operator[](unsigned i) const { return vector[i]; } diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt --- a/mlir/lib/ExecutionEngine/CMakeLists.txt +++ b/mlir/lib/ExecutionEngine/CMakeLists.txt @@ -36,7 +36,9 @@ ${outlibs}) add_llvm_library(mlir_c_runner_utils SHARED CRunnerUtils.cpp) +set_property(TARGET mlir_c_runner_utils PROPERTY CXX_STANDARD 11) add_llvm_library(mlir_c_runner_utils_static CRunnerUtils.cpp) +set_property(TARGET mlir_c_runner_utils_static PROPERTY CXX_STANDARD 11) target_compile_definitions(mlir_c_runner_utils PRIVATE mlir_c_runner_utils_EXPORTS) add_llvm_library(mlir_runner_utils SHARED RunnerUtils.cpp)