<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/60094>60094</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [mlir] SCF-for-loop-peeling tiggers Assertion Failure " (lhs.isSymbolicOrConstant() || rhs.isSymbolicOrConstant())"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          CelestineSmith
      </td>
    </tr>
</table>

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/159cac50
Reproduced with: 
` mlir-opt --scf-for-loop-peeling temp.mlir`

temp.mlir:
``` 
func.func @func(%arg0: memref<i64>, %arg1: index) {
  %c0 = arith.constant 0 : index
  %0 = affine.apply affine_map<()[s0] -> (s0 * s0)>()[%arg1]
  scf.for %arg2 = %c0 to %0 step %arg1 {
    %1 = affine.min affine_map<(d0)[s0] -> (s0, -d0 + s0 * s0)>(%arg2)[%arg1] // pass succeed if remove this line
    %2 = arith.index_cast %0 : index to i64
    memref.store %2, %arg0[] : memref<i64>
  }
 return
}
```
 
trace:
```console  
Assertion failed: (lhs.isSymbolicOrConstant() || rhs.isSymbolicOrConstant()), function simplifyMul, file AffineExpr.cpp, line 673.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt --scf-for-loop-peeling temp.mlir
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-opt 0x000000010491c818 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x000000010491b880 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x000000010491ceb0 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001aad414c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001aad29ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001aac64340 abort + 168
6  libsystem_c.dylib 0x00000001aac63754 err + 0
7  mlir-opt                 0x000000010666a1c8 mlir::AffineExpr::operator%(mlir::AffineExpr) const (.cold.1) + 0
8 mlir-opt                 0x0000000105f99e7c mlir::AffineExpr::floorDiv(mlir::AffineExpr) const + 0
9  mlir-opt 0x0000000105f99b54 mlir::getAffineBinaryOpExpr(mlir::AffineExprKind, mlir::AffineExpr, mlir::AffineExpr) + 108
10 mlir-opt 0x0000000105f9a4e4 mlir::AffineExpr::replaceDimsAndSymbols(llvm::ArrayRef<mlir::AffineExpr>, llvm::ArrayRef<mlir::AffineExpr>) const + 180
11 mlir-opt 0x0000000105f9a4c4 mlir::AffineExpr::replaceDimsAndSymbols(llvm::ArrayRef<mlir::AffineExpr>, llvm::ArrayRef<mlir::AffineExpr>) const + 148
12 mlir-opt 0x0000000105f9a4a8 mlir::AffineExpr::replaceDimsAndSymbols(llvm::ArrayRef<mlir::AffineExpr>, llvm::ArrayRef<mlir::AffineExpr>) const + 120
13 mlir-opt 0x0000000105fa2350 mlir::AffineMap::replaceDimsAndSymbols(llvm::ArrayRef<mlir::AffineExpr>, llvm::ArrayRef<mlir::AffineExpr>, unsigned int, unsigned int) const + 200
14 mlir-opt                 0x00000001049277f0 mlir::alignAffineMapWithValues(mlir::AffineMap, mlir::ValueRange, mlir::ValueRange, mlir::ValueRange, llvm::SmallVector<mlir::Value, 6u>*) + 1060
15 mlir-opt                 0x0000000104936900 alignAndAddBound(mlir::FlatAffineValueConstraints&, mlir::presburger::IntegerRelation::BoundType, unsigned int, mlir::AffineMap, mlir::ValueRange) + 288
16 mlir-opt                 0x0000000104935d78 mlir::simplifyConstrainedMinMaxOp(mlir::Operation*, mlir::FlatAffineValueConstraints) + 456
17 mlir-opt 0x00000001054291d8 canonicalizeMinMaxOp(mlir::RewriterBase&, mlir::Operation*, mlir::FlatAffineValueConstraints) + 332
18 mlir-opt 0x0000000105429608 mlir::scf::rewritePeeledMinMaxOp(mlir::RewriterBase&, mlir::Operation*, mlir::Value, mlir::Value, mlir::Value, bool) + 816
19 mlir-opt 0x0000000105419348 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<rewriteAffineOpAfterPeeling(mlir::RewriterBase&, mlir::scf::ForOp, mlir::scf::ForOp, mlir::Value)::$_1>(long, mlir::Operation*) + 68
20 mlir-opt                 0x0000000106057c90 mlir::detail::walk(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) + 160
21 mlir-opt 0x0000000105418c94 mlir::scf::peelAndCanonicalizeForLoop(mlir::RewriterBase&, mlir::scf::ForOp, mlir::scf::ForOp&) + 1140
22 mlir-opt 0x000000010541ac18 (anonymous namespace)::ForLoopPeelingPattern::matchAndRewrite(mlir::scf::ForOp, mlir::PatternRewriter&) const + 160
23 mlir-opt 0x00000001061cd010 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) + 1420
24 mlir-opt                 0x0000000105f81544 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 3976
25 mlir-opt                 0x000000010541a8f0 (anonymous namespace)::ForLoopPeeling::runOnOperation() + 764
26 mlir-opt 0x0000000105f326c4 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 428
27 mlir-opt                 0x0000000105f32bf4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
28 mlir-opt                 0x0000000105f34570 mlir::PassManager::run(mlir::Operation*) + 1148
29 mlir-opt 0x0000000105f2d934 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
30 mlir-opt                 0x0000000105f2d504 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 704
31 mlir-opt                 0x0000000105f989a0 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 656
32 mlir-opt 0x0000000105f2b92c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 216
33 mlir-opt                 0x0000000105f2be20 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
34 mlir-opt 0x00000001047bf41c main + 108
35 dyld 0x0000000109815088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt1u47gVfhrlhohBUT-WLnLhOJNu0BgJksEu2huDFo9sdihSJanMeJ--ICXZsi1nnNkBOigaBHEkHR5-55cfKVNj-FoC3ATJbZDcXdHGbpS-mYMAY7mE14rbzdVKse3N4vHhBa0aLiyiFhWqqrhFG2trE0SzgNwH5H7N7aZZTQpVBeReiLf-47rW6l9Q2IDct-MCch8meUGLBAf4LsCzF6i1Yk0BDH3ldhNEM9Q-CFKMKsH1taotur42RXldKn0tlKqvawDB5RpZqOqJEwrSTl37d38_mu20tb-d9rKRxcT9QUGM3WdAsoAkVK-xg1BBpaEMojlP4yD6FJA5ap-G7imXDL4FJEfB9LZVh9zjAqMgukNUc7uZFEoaS6VF7mY_ZC_biZYllzChdS223cWyonUQzT2cPEhuDQ6SO3QdRJ9QQDKDUUBmyGD30OHqpHpwyV0_hynKSal0B5v46VqMVrUAjIW6t2poiccXDvFVXJ6gY3gcn3PVNXMwb9EYWo_mGDRqswjV1BhkmqIAYIiXSEOl3gDZDTdIcAkHEMnA2969y4Ia2zu3c7mz1sVwN7CN7MRYpcFr2ccWt6WAxhKgj9y0d7AG22jZJVd_d5dlnVCXjZoWcJqJLkOUANRJzYwBbbmSqKRcAPOVQDKxMRNuXrfVSglePOl5l1dt6FEwnQfTOdLvSvnfOXJp7icwvKoFL7eLRvj7XACa-fh--lbrSVHX7rZzOEqn0aTF9_z4afb6CZlm5cqfolWzRhpqpa3z8YfbATemAeOCTiVDXBaiYS7SgApNzQataPHFO66b_tXS4gtiTVXvPIknAc6ftVprWiGq100F0hofvYv7xpFu34NUY5HxrkSSVmBcGECaRgPaqgZt6Bsgb00rxP8Ejbh0zzR6nn3-DSmNDFhvDMg3rpV0yNAb1ShI8ePj74vl6z8Wt0-PD__89LJ0Q1xjsgrVikvvTtco872haG8R_obbnxDHeVhkYeaxONloZram_edZc2m9WZ998pFsL6Tp16UyVgOtApK6SHOXKLkv2SRtpwwHUx7_HEJYZRkeg_DSyFe-llT8RiUToE2fseQWhSFppyHnLYMVRgcKApINgEZxV9QRQoKvzNZYqJa1oLZUupqwreCrgUpKWRzGRYyWhq-tplV9YG58oMRuNFA2poPkABh1AssvXAivhmRZqycZ6ilGNBRpHMUY0ZWrG--KtBuafn9oNE1iBFr7gV2PmV4WqDRNaVhkqF8Uo9m-4NtrVYOmVumAJAHJRuVIjvyy5gpiUijBJmEfjg5NdhGYpMxzmBbvgCmFUvqOv12AZDd3Pp5LbrJVEg8mW4NtVd1ySfX2qW5Vjs70dy6ZK5FxFOfud1mOu9CG-BwyGkP8jhs01IIWcMcrM5Osbe_moJhnWtPti1-pxtV47vIx-aFvw6zzbhiet6H4xW2I-ziQ8zbQ92rjF7CB9HGIzthASZTgExsWtP5vmjBHjfT7DNYuMsfXQxMJ7k2ML1x7yHRaDk2mgq_lzu4_uN38ToVnGSe17fxyUL5e8oXKNfzI_b1XXisqxO9QuE46dIyXd6Jp4z0z23eJni6GyYV2R2mOMWqtlWzG2K1qXJsaWHkvaNfk_MSeD2rKHT9q1_y9aK3BrBq9hu76QVpYg34BQR1bbG_6GT5vaxiL6Yecmx-umGF6qdEJmw5rtCexO9OALbhc0G9P9YEnnvy65gxxPh-ies9HLcp4R4em41UXkzxkGSqoVJIX1HHBURAv8FVzC_qWGjgJwF9BGEUdkwqzswhTfOC3ouw7gsf0DCDOuO4HUe9S_bJbK6VEb04W9g7Pz5gT5lE8NOcPKr68gGmEHRRhv9NZ6qP2NJB-J0n8ZtXfL6gQbieyLGUQzTuPtRF5qmelBf3cbiku99vO__dKP9WXP-v8lbdXAYmXYbunFspNfz40rWd7mknwZXwRJ9MiHzZXBpZy0f7_lYov7xbZzw3FgXFu3JNmsKdZff8kZyhKHGZFHo-52e0HZ5LNB-V7r_SjUh-og4_EM91vgOIe9BlOEoe0CDPnGgduW6nGtLvR2u_n8p1eh7ZLwmdqLeiuY1fUFpuZZB34A4Pew9wp6W3uQA-YyM7d40wkDQuGQ3yqcVbXghd-i_FdgOebyxi8d_LNNZfD_OoUtBa11p1QmyMlb4qzv6xkP_hRrV2yjSX_Ob1d1sQ9CySXUaSkzMIkHqa-P2rsZnFE8F4J9jcNwLjYHrDBRWPpSsAoyXuBtScGR5V5r9Wf0Eemm-MV7MCYobSfddtJz5Us-Xq3qOXTbhkgl1EiVy1ZiT9WLd0q2MgnOUi33RnFtD81JOkZxh2R9GDnM-yQT_Vn9VQ_U2NmjNa7nNeNPIq3MScpfj75Z5KKreFmQSV1fG23ep7yak9fSN_0pxemS0RW5cdNeuY1-OPZwxJ2ojukF7OHi2087ArGPDhy5M8AlR5pG0OBAbHtsT9TDdI-yFL1-bpbOqNd1V16vBHFyRQfzd7bM5oHYyt2uNu3kjNkqCQsj2JUgy6Vrma-25jvnPX1vuw_jWWt6NLxCb84bKgGtqyt28AMNjaq0QUs1m5jd6akF48PL3MlLXyzl_OAd7vhYQL1PfbQhu7gEvfngZcRHOe8BA9z_RDIjyA_9WUj-b8bOPHlAiqlt7dNWbYJfjqQQUkbYZcMBFg4P9gR1aN15zjm59jsIG6C66faLiiX38meX8PCn5lLe4k7TgUU1i1uxurtmXq57HPA0vEhS_81PHiSI-2St6uh8NJz3Cynw0ZnasHtTLJnrQowpkf_i1TG_0Qlvysx3hvT_hgjOncASlY5GZ7H_78j_PSO0B579ecbUXTpKrUCgs9GpiNCxYa2lOdo0X21msu1o-8X25X3x80d94ji8Td001UZhwWqKJeHLzuiBLGtYEPhPAsTnGXIWNq99Up6Pxy9E79iNxHLo5xewU2YTqOcTNMpvtrcJClLM0IBMMMJBSjycEpoCCVQAJaTK35DMIlwGE5xlMQRniSEsTiZxmyaAk5DCGIMFeVi4twzUXp95V9B36QY5_GVoCsQxn8ZhhAJX5F_GBASJHdX-sa_7l01axPEWHBjzV6L5Vb4b9F4_yZ36HV-P_LGma_XoA3av-W_p1w0_jsI5Ke-5ydXjRY3P_4-3vvjPwEAAP__dubYEg">