Replace constexpr MemRefType::kDynamicStrideOrOffset by a MemRefType:;getDynamicStrideOrOffset() method - NFC

This fixes global ODR-use issues, some of which manifest in Parser.cpp.

Fixes #167.

PiperOrigin-RevId: 272886347
diff --git a/include/mlir/IR/StandardTypes.h b/include/mlir/IR/StandardTypes.h
index c2c230e..f314fdb 100644
--- a/include/mlir/IR/StandardTypes.h
+++ b/include/mlir/IR/StandardTypes.h
@@ -367,8 +367,9 @@
   /// Returns the memory space in which data referred to by this memref resides.
   unsigned getMemorySpace() const;
 
-  static constexpr int64_t kDynamicStrideOrOffset =
-      std::numeric_limits<int64_t>::min();
+  static int64_t getDynamicStrideOrOffset() {
+    return std::numeric_limits<int64_t>::min();
+  }
 
   static bool kindof(unsigned kind) { return kind == StandardTypes::MemRef; }
 
@@ -477,7 +478,7 @@
 ///      where K and ki's are constants or symbols.
 ///
 /// A stride specification is a list of integer values that are either static
-/// or dynamic (encoded with kDynamicStrideOrOffset). Strides encode the
+/// or dynamic (encoded with getDynamicStrideOrOffset()). Strides encode the
 /// distance in the number of elements between successive entries along a
 /// particular dimension. For example, `memref<42x16xf32, (64 * d0 + d1)>`
 /// specifies a view into a non-contiguous memory region of `42` by `16` `f32`
@@ -494,7 +495,7 @@
                                   SmallVectorImpl<int64_t> &strides,
                                   int64_t &offset);
 
-/// Given a list of strides (in which MemRefType::kDynamicStrideOrOffset
+/// Given a list of strides (in which MemRefType::getDynamicStrideOrOffset()
 /// represents a dynamic value), return the single result AffineMap which
 /// represents the linearized strided layout map. Dimensions correspond to the
 /// offset followed by the strides in order. Symbols are inserted for each
diff --git a/lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp b/lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp
index c4bf7cd..ef48950 100644
--- a/lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp
+++ b/lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp
@@ -578,7 +578,7 @@
     // Dynamic strides are ok if they can be deduced from dynamic sizes (which
     // is guaranteed when succeeded(successStrides)). Dynamic offset however can
     // never be alloc'ed.
-    if (offset == MemRefType::kDynamicStrideOrOffset)
+    if (offset == MemRefType::getDynamicStrideOrOffset())
       return matchFailure();
 
     return matchSuccess();
@@ -655,7 +655,7 @@
     auto successStrides = getStridesAndOffset(type, strides, offset);
     assert(succeeded(successStrides) && "unexpected non-strided memref");
     (void)successStrides;
-    assert(offset != MemRefType::kDynamicStrideOrOffset &&
+    assert(offset != MemRefType::getDynamicStrideOrOffset() &&
            "unexpected dynamic offset");
 
     // 0-D memref corner case: they have size 1 ...
@@ -688,7 +688,7 @@
     SmallVector<Value *, 4> strideValues(nStrides, nullptr);
     for (auto indexedStride : llvm::enumerate(llvm::reverse(strides))) {
       int64_t index = nStrides - 1 - indexedStride.index();
-      if (strides[index] == MemRefType::kDynamicStrideOrOffset)
+      if (strides[index] == MemRefType::getDynamicStrideOrOffset())
         // Identity layout map is enforced in the match function, so we compute:
         //   `runningStride *= sizes[index]`
         runningStride = runningStride
@@ -920,14 +920,14 @@
         loc, elementTypePtr, memRefDescriptor,
         rewriter.getIndexArrayAttr(kPtrPosInMemRefDescriptor));
     Value *offsetValue =
-        offset == MemRefType::kDynamicStrideOrOffset
+        offset == MemRefType::getDynamicStrideOrOffset()
             ? rewriter.create<LLVM::ExtractValueOp>(
                   loc, indexTy, memRefDescriptor,
                   rewriter.getIndexArrayAttr(kOffsetPosInMemRefDescriptor))
             : this->createIndexConstant(rewriter, loc, offset);
     for (int i = 0, e = indices.size(); i < e; ++i) {
       Value *stride;
-      if (strides[i] != MemRefType::kDynamicStrideOrOffset) {
+      if (strides[i] != MemRefType::getDynamicStrideOrOffset()) {
         // Use static stride.
         auto attr =
             rewriter.getIntegerAttr(rewriter.getIndexType(), strides[i]);
diff --git a/lib/IR/StandardTypes.cpp b/lib/IR/StandardTypes.cpp
index d715fa3..54f39a3 100644
--- a/lib/IR/StandardTypes.cpp
+++ b/lib/IR/StandardTypes.cpp
@@ -453,14 +453,14 @@
     seen[pos] = true;
     return;
   }
-  if (strides[pos] != MemRefType::kDynamicStrideOrOffset)
+  if (strides[pos] != MemRefType::getDynamicStrideOrOffset())
     // Already seen case accumulates unless they are already saturated.
     strides[pos] += val;
 }
 
 // This sums multiple offsets as they are seen. In the particular case of
 // accumulating a dynamic offset with either a static of dynamic one, this
-// saturates to MemRefType::kDynamicStrideOrOffset.
+// saturates to MemRefType::getDynamicStrideOrOffset().
 static void accumulateOffset(int64_t &offset, bool &seenOffset, int64_t val) {
   if (!seenOffset) {
     // Newly seen case, sets value
@@ -468,7 +468,7 @@
     seenOffset = true;
     return;
   }
-  if (offset != MemRefType::kDynamicStrideOrOffset)
+  if (offset != MemRefType::getDynamicStrideOrOffset())
     // Already seen case accumulates unless they are already saturated.
     offset += val;
 }
@@ -501,7 +501,7 @@
     }
     auto cst = bin.getRHS().dyn_cast<AffineConstantExpr>();
     if (!cst) {
-      strides[dim.getPosition()] = MemRefType::kDynamicStrideOrOffset;
+      strides[dim.getPosition()] = MemRefType::getDynamicStrideOrOffset();
       seen[dim.getPosition()] = true;
     } else {
       accumulateStrides(strides, seen, dim.getPosition(), cst.getValue());
@@ -515,7 +515,7 @@
         accumulateOffset(offset, seenOffset, cst.getValue());
       } else if (auto sym = e.dyn_cast<AffineSymbolExpr>()) {
         // Independent symbols saturate.
-        offset = MemRefType::kDynamicStrideOrOffset;
+        offset = MemRefType::getDynamicStrideOrOffset();
         seenOffset = true;
       } else if (auto dim = e.dyn_cast<AffineDimExpr>()) {
         // Independent symbols cumulate 1.
@@ -542,7 +542,7 @@
   }
   if (auto sym = e.dyn_cast<AffineSymbolExpr>()) {
     assert(!seenOffset && "unexpected `seen` bit with single term");
-    offset = MemRefType::kDynamicStrideOrOffset;
+    offset = MemRefType::getDynamicStrideOrOffset();
     seenOffset = true;
     return;
   }
@@ -670,7 +670,7 @@
 
   // AffineExpr for offset.
   // Static case.
-  if (offset != MemRefType::kDynamicStrideOrOffset) {
+  if (offset != MemRefType::getDynamicStrideOrOffset()) {
     auto cst = getAffineConstantExpr(offset, context);
     expr = cst;
   } else {
@@ -687,7 +687,7 @@
     auto d = getAffineDimExpr(dim, context);
     AffineExpr mult;
     // Static case.
-    if (stride != MemRefType::kDynamicStrideOrOffset)
+    if (stride != MemRefType::getDynamicStrideOrOffset())
       mult = getAffineConstantExpr(stride, context);
     else
       // Dynamic case, new symbol for each new stride.
diff --git a/lib/Parser/Parser.cpp b/lib/Parser/Parser.cpp
index 4cb3569..3f9c371 100644
--- a/lib/Parser/Parser.cpp
+++ b/lib/Parser/Parser.cpp
@@ -656,7 +656,7 @@
   if (!maybeOffset && !question)
     return emitError("invalid offset");
   offset = maybeOffset ? static_cast<int64_t>(maybeOffset.getValue())
-                       : MemRefType::kDynamicStrideOrOffset;
+                       : MemRefType::getDynamicStrideOrOffset();
   consumeToken();
 
   if (!consumeIf(Token::comma))
@@ -996,7 +996,7 @@
     return success();
   while (true) {
     if (consumeIf(Token::question)) {
-      dimensions.push_back(MemRefType::kDynamicStrideOrOffset);
+      dimensions.push_back(MemRefType::getDynamicStrideOrOffset());
     } else {
       // This must be an integer value.
       int64_t val;
diff --git a/test/lib/Transforms/TestMemRefStrideCalculation.cpp b/test/lib/Transforms/TestMemRefStrideCalculation.cpp
index 334a3f3..40788b2 100644
--- a/test/lib/Transforms/TestMemRefStrideCalculation.cpp
+++ b/test/lib/Transforms/TestMemRefStrideCalculation.cpp
@@ -43,13 +43,13 @@
       return;
     }
     llvm::outs() << "MemRefType offset: ";
-    if (offset == MemRefType::kDynamicStrideOrOffset)
+    if (offset == MemRefType::getDynamicStrideOrOffset())
       llvm::outs() << "?";
     else
       llvm::outs() << offset;
     llvm::outs() << " strides: ";
     interleaveComma(strides, llvm::outs(), [&](int64_t v) {
-      if (v == MemRefType::kDynamicStrideOrOffset)
+      if (v == MemRefType::getDynamicStrideOrOffset())
         llvm::outs() << "?";
       else
         llvm::outs() << v;