diff --git a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp index 10ccd5c97783b..53347955c5b82 100644 --- a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp +++ b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp @@ -158,6 +158,7 @@ class AffineForLowering : public OpRewritePattern { rewriter.create(loc, op.getStepAsInt()); auto scfForOp = rewriter.create(loc, lowerBound, upperBound, step, op.getInits()); + scfForOp->setDiscardableAttrs(op->getDiscardableAttrDictionary()); rewriter.eraseBlock(scfForOp.getBody()); rewriter.inlineRegionBefore(op.getRegion(), scfForOp.getRegion(), scfForOp.getRegion().end()); diff --git a/mlir/test/Conversion/AffineToStandard/lower-affine.mlir b/mlir/test/Conversion/AffineToStandard/lower-affine.mlir index 550ea71882e14..414ccbe304dbf 100644 --- a/mlir/test/Conversion/AffineToStandard/lower-affine.mlir +++ b/mlir/test/Conversion/AffineToStandard/lower-affine.mlir @@ -927,3 +927,16 @@ func.func @affine_parallel_with_reductions_i64(%arg0: memref<3x3xi64>, %arg1: me // CHECK: scf.reduce.return %[[RES]] : i64 // CHECK: } // CHECK: } + +#loop_vectorize = #llvm.loop_vectorize +#loop_annotation = #llvm.loop_annotation +func.func @affine_for_with_annotations(%ub : index) { + affine.for %i = 1 to %ub { + func.call @body(%i) : (index) -> () + } {loop_annotation = #loop_annotation} + return +} +// CHECK-LABEL: @affine_for_with_annotations +// CHECK: scf.for {{.*}} { +// CHECK: } {loop_annotation = #loop_annotation} +// CHECK: return