Temporarily Revert "[mlir] Add padding to 1-D Vector in CRunnerUtils.h"
authorEric Christopher <echristo@gmail.com>
Mon, 2 Mar 2020 22:44:38 +0000 (14:44 -0800)
committerEric Christopher <echristo@gmail.com>
Mon, 2 Mar 2020 22:47:21 +0000 (14:47 -0800)
as it broke the Werror build:

.../sources/llvm-project/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h:85:16: error: zero size arrays are an extension [-Werror,-Wzero-length-array]
  char padding[detail::nextPowerOf2<sizeof(T[Dim])>() - sizeof(T[Dim])];
               ^~~~~~~~~~~~~~~

This reverts commit 78f9e5d098af95610f4542ee41479d7931261066.

mlir/include/mlir/ExecutionEngine/CRunnerUtils.h
mlir/include/mlir/ExecutionEngine/RunnerUtils.h

index d398060..d82963b 100644 (file)
@@ -39,50 +39,14 @@ template <int N> void dropFront(int64_t arr[N], int64_t *res) {
 //===----------------------------------------------------------------------===//
 // Codegen-compatible structures for Vector type.
 //===----------------------------------------------------------------------===//
-namespace detail {
-  template <unsigned N>
-  constexpr unsigned nextPowerOf2();
-  template <>
-  constexpr unsigned nextPowerOf2<0>() {
-    return 1;
-  }
-  template <>
-  constexpr unsigned nextPowerOf2<1>() {
-    return 1;
-  }
-  template <unsigned N>
-  constexpr unsigned nextPowerOf2() {
-    return (!(N & (N - 1))) ? N : 2 * nextPowerOf2<(N + 1) / 2>();
-  }
-} // end namespace detail
-
-// N-D vectors recurse down to 1-D.
 template <typename T, int Dim, int... Dims>
 struct Vector {
-  constexpr Vector<T, Dims...> &operator[](unsigned i) { return vector[i]; }
-  constexpr const Vector<T, Dims...> &operator[](unsigned i) const {
-    return vector[i];
-  }
-
-private:
   Vector<T, Dims...> vector[Dim];
 };
 
-// 1-D vectors in LLVM are automatically padded to the next power of 2.
-// We insert explicit padding in to account for this.
-template <typename T, int Dim> struct Vector<T, Dim> {
-  Vector() {
-    static_assert(detail::nextPowerOf2<sizeof(T[Dim])>() >= sizeof(T[Dim]),
-                  "size error");
-    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]; }
-
-private:
+template <typename T, int Dim>
+struct Vector<T, Dim> {
   T vector[Dim];
-  char padding[detail::nextPowerOf2<sizeof(T[Dim])>() - sizeof(T[Dim])];
 };
 
 template <int D1, typename T>
index 16dc54f..2676e64 100644 (file)
@@ -92,7 +92,7 @@ void VectorDataPrinter<T, M, Dims...>::print(std::ostream &os,
   static_assert(sizeof(val) == M * StaticSizeMult<Dims...>::value * sizeof(T),
                 "Incorrect vector size!");
   // First
-  os << "(" << val[0];
+  os << "(" << val.vector[0];
   if (M > 1)
     os << ", ";
   if (sizeof...(Dims) > 1)
@@ -100,14 +100,14 @@ void VectorDataPrinter<T, M, Dims...>::print(std::ostream &os,
   // Kernel
   for (unsigned i = 1; i + 1 < M; ++i) {
     printSpace(os, 2 * sizeof...(Dims));
-    os << val[i] << ", ";
+    os << val.vector[i] << ", ";
     if (sizeof...(Dims) > 1)
       os << "\n";
   }
   // Last
   if (M > 1) {
     printSpace(os, sizeof...(Dims));
-    os << val[M - 1];
+    os << val.vector[M - 1];
   }
   os << ")";
 }