diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 7f45904fab7e1..cf93feb3b0243 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1682,6 +1682,10 @@ struct ViewOpLowering : public ConvertOpToLLVMPattern { LogicalResult matchAndRewrite(memref::ViewOp viewOp, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override { + // Early exit for 0-D corner case. + if (viewMemRefType.getRank() == 0) + return rewriter.replaceOp(viewOp, {targetMemRef}), success(); + auto loc = viewOp.getLoc(); auto viewMemRefType = viewOp.getType(); @@ -1733,10 +1737,6 @@ struct ViewOpLowering : public ConvertOpToLLVMPattern { rewriter, loc, createIndexAttrConstant(rewriter, loc, indexType, offset)); - // Early exit for 0-D corner case. - if (viewMemRefType.getRank() == 0) - return rewriter.replaceOp(viewOp, {targetMemRef}), success(); - // Fields 4 and 5: Update sizes and strides. Value stride = nullptr, nextSize = nullptr; for (int i = viewMemRefType.getRank() - 1; i >= 0; --i) {