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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Invalid mlir input causes crash: "Remainder by zero?"
        </td>
    </tr>

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

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

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

<pre>
    Reproduced with:  
`mlir-opt --convert-scf-to-openmp temp.mlir`

temp.mlir:
```mlir 
module {
  %c3 = arith.constant 3 : index
  %c0 = arith.constant 0 : index 
  index.rems %c3, %c0  
}

``` 

trace:
```console 
Assertion failed: (RHS.U.VAL != 0 && "Remainder by zero?"), function urem, file APInt.cpp, line 1667.
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 --convert-scf-to-openmp 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 0x0000000103182b40 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x000000010318305c PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt 0x00000001031810e0 llvm::sys::RunSignalHandlers() + 148
3  mlir-opt 0x0000000103184cc8 SignalHandler(int) + 252
4 libsystem_platform.dylib 0x00000001b072d4c4 _sigtramp + 56
5 libsystem_pthread.dylib  0x00000001b0715ee0 pthread_kill + 288
6 libsystem_c.dylib        0x00000001b0650340 abort + 168
7 libsystem_c.dylib        0x00000001b064f754 err + 0
8  mlir-opt 0x0000000102fac320 llvm::APInt::urem(llvm::APInt const&) const + 224
9  mlir-opt                 0x0000000102fac864 llvm::APInt::srem(llvm::APInt const&) const + 400
10 mlir-opt 0x0000000103b8cf00 mlir::index::RemSOp::fold(llvm::ArrayRef<mlir::Attribute>)::$_6::operator()(llvm::APInt const&, llvm::APInt const&) const + 44
11 mlir-opt 0x0000000103b8ceb4 std::__1::optional<llvm::APInt> llvm::function_ref<std::__1::optional<llvm::APInt> (llvm::APInt const&, llvm::APInt const&)>::callback_fn<mlir::index::RemSOp::fold(llvm::ArrayRef<mlir::Attribute>)::$_6>(long, llvm::APInt const&, llvm::APInt const&) + 84
12 mlir-opt 0x000000010355cca8 llvm::function_ref<std::__1::optional<llvm::APInt> (llvm::APInt const&, llvm::APInt const&)>::operator()(llvm::APInt const&, llvm::APInt const&) const + 96
13 mlir-opt 0x0000000103b2b83c foldBinaryOpChecked(llvm::ArrayRef<mlir::Attribute>, llvm::function_ref<std::__1::optional<llvm::APInt> (llvm::APInt const&, llvm::APInt const&)>) + 288
14 mlir-opt                 0x0000000103b2bff4 mlir::index::RemSOp::fold(llvm::ArrayRef<mlir::Attribute>) + 72
15 mlir-opt                 0x0000000103b7bcf4 mlir::LogicalResult mlir::Op<mlir::index::RemSOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::IndexType>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::NOperands<2u>::Impl, mlir::OpTrait::OpInvariants, mlir::ConditionallySpeculatable::Trait, mlir::OpTrait::AlwaysSpeculatableImplTrait, mlir::MemoryEffectOpInterface::Trait, mlir::InferTypeOpInterface::Trait>::foldSingleResultHook<mlir::index::RemSOp>(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) + 68
16 mlir-opt                 0x0000000103b7bc9c mlir::Op<mlir::index::RemSOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::IndexType>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::NOperands<2u>::Impl, mlir::OpTrait::OpInvariants, mlir::ConditionallySpeculatable::Trait, mlir::OpTrait::AlwaysSpeculatableImplTrait, mlir::MemoryEffectOpInterface::Trait, mlir::InferTypeOpInterface::Trait>::getFoldHookFn()::'lambda'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&)::operator()(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const + 60
17 mlir-opt                 0x0000000103b7bc4c mlir::LogicalResult llvm::detail::UniqueFunctionBase<mlir::LogicalResult, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&>::CallImpl<mlir::Op<mlir::index::RemSOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::IndexType>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::NOperands<2u>::Impl, mlir::OpTrait::OpInvariants, mlir::ConditionallySpeculatable::Trait, mlir::OpTrait::AlwaysSpeculatableImplTrait, mlir::MemoryEffectOpInterface::Trait, mlir::InferTypeOpInterface::Trait>::getFoldHookFn()::'lambda'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>(void*, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) + 124
18 mlir-opt 0x0000000107565190 llvm::unique_function<mlir::LogicalResult (mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>::operator()(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const + 92
19 mlir-opt 0x000000010755e7c8 mlir::RegisteredOperationName::foldHook(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const + 72
20 mlir-opt                 0x000000010755e6bc mlir::Operation::fold(llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) + 104
21 mlir-opt 0x000000010735c62c mlir::OpBuilder::tryFold(mlir::Operation*, llvm::SmallVectorImpl<mlir::Value>&) + 388
22 mlir-opt 0x000000010724abec (anonymous namespace)::OperationLegalizer::legalizeWithFold(mlir::Operation*, mlir::ConversionPatternRewriter&) + 224
23 mlir-opt 0x000000010724a6a0 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 824
24 mlir-opt 0x0000000107249d3c (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) + 64
25 mlir-opt                 0x000000010722d4f0 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 568
26 mlir-opt 0x000000010722d220 mlir::applyPartialConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 124
27 mlir-opt                 0x000000010722d714 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 72
28 mlir-opt 0x0000000106317628 (anonymous namespace)::applyPatterns(mlir::ModuleOp) + 220
29 mlir-opt                 0x0000000106310740 (anonymous namespace)::SCFToOpenMPPass::runOnOperation() + 40
30 mlir-opt 0x00000001070e571c mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
31 mlir-opt                 0x00000001070e5e20 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
32 mlir-opt                 0x00000001070e8140 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
33 mlir-opt                 0x00000001070e7ef0 mlir::PassManager::run(mlir::Operation*) + 864
34 mlir-opt 0x00000001070cb6e4 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
35 mlir-opt                 0x00000001070cb234 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 524
36 mlir-opt 0x00000001070cafe0 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::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
37 mlir-opt                 0x00000001070caef4 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&) + 80
38 mlir-opt                 0x00000001072e11bc llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
39 mlir-opt                 0x00000001072e0ca0 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) + 128
40 mlir-opt 0x00000001070c8934 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) + 320
41 mlir-opt                 0x00000001070c8b3c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
42 mlir-opt                 0x00000001070c9700 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
43 mlir-opt                 0x00000001029a4d48 main + 148
44 dyld                     0x0000000121691088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1tv27jy_zTKC5FAoq5-yIPjJGiAZGPE2f7x3xeDokY2TylSh6TSdT_9AXVxJN-idLfYdNGgqG2JHP7mPkNRRGu2EgCXTnjlhNdnpDJrqS5nknNZSmUq7Z6lMttcPkGpZFZRyNBXZtaOP0XIca8dd-pEbsGZOpelQefnVIoXUOZc0_zcyHNZgihKZKAoL-woJ3LbWfX_r9f96ZZa889ebVcoZFZxQE581fxGyMEh9ZHjXyOimFlfUCm0IcIge3GKmMjgz_5Y99BY93Us6gbXvy4UFLpZw8GzlkDHbXzdZ2ALFw3YUoTCPkt2ZWkZqS9PtQZlmBQoJ4xDZsE4OHn6tLj4_eLz9B452LOoXeTgyMERcjB-goJYiAqlG_QNlHT8WwdjB08s0LwStCZYKSjqC4wDms7vhLmgZWmvcCYAeVEUXzQg5vc308UN0lVaMIMISqsVUmA1j4xEa2NKbfnAtw6-XTGzrtILKgsH33L-0n2cl0r-B6hx8C3TugLt4FtERIaYoLzKAJk1IKqIXqOU0C-1cNrlF4bQLyirinIrLffCcSdzJVeKFIioVVWAMBYEeoeV7RCvTVZWBulNkUqOBCnAKjgBoSsFaCMrtCYvgGp2mkHsGyjEhL2n0Hz6_AlJhTSYmhsQL0xJYaGhF6KQE7n3958flov_f7h6vL_74-ZpaadYuzASlZKJWp7MWE1tOUWvLLl_us2f5_pegtPArbHYsf5Ub3TzZa6YMDVbz7WF4eR1kCJfl1IbBaSo7WWGmLDLIQdfoRg3S3q9JXf_hhB8N6RoZ70FWwnCPxGRcVAOTl4kyxw87RbBSbMIPsqX58JBvp4qMaCtHZx0VL2gJesfJRtQmqBdcD3ucdiyHyDOUr3RBoplyYnJpSousg1naY9i6sY4C2iAlpqtjCJFWRMJo4ZG2Kdh1gpI1pIY0vBCABe1I5ZfGOetkFp2oh4d2lHY1UTqRqHrBy4iqXXJWh5RSyAeSSDI4zBAoFQ9vQ2_yWFh4pxQH_d1VEeP5msTVZKde6iOp7XJTZrvDZ84aFaajDM5u3ISBYdX1u9ZOXBbHj33sMGkCc3d5l5DrUkXjSVCsXgsm--55NlwVaXI5glyx5-9Tp4ao1haGXD8m9a7bcAMllHzVZagiJGqMemTXMx2uT_GYStazzvKIKQB0iZraC2XXofFpgfCHX-2J-eb3uJdIlmqmtn3Evp-Jq0M6zuUcG6TxTIXA2n_MFXd2OlSrE4DPK0hq5uk0w0-rJswpJQkH0rWP8BCJ22w9PwjForTxKfIqu2KCaI2j-VsDfQLvFuLs48iym0SbMOzF4xLtSlO8zz4QdFomPzDkYjilA4Q3csVo4Q_ga646V230E76Jp4NRj8rwtqI_gco-QQrJoU-MepRQLPo6THPmxKydmAf0J0FZG9uTf2uKPkbqBYVpaC1VKeA_fZofUZk2vFnuBpL_rG8Ey9EMWIL2sGwmRQZa2yTbxYl0IoTQ1IOze2GxnHCU_6VbHR_nkVyYNYDFFJtbvIcqLFoDKi8bVUOrnInclBWgkcGd4xb41wwseKtvj5J-eWtuG0jbp8fG4SYFHVBOfC29wWBRUE4_wzUSFWroz_rsbyVfGspN72w3RVVXjTeRyb0ly_88oU9X1iBsVZmXeBWtDm1rTRiToo0Iw6OP4jtHykAPgK0XjXR7Rl58XjnDOjRBPYKKgNDGG--_y7Yfyu4bUuIK6JhgHFAYtf8_hkZdQY3I5wfGP8rHv2KRz9bPGqL6ro22O4ufQRf6zajul0NLznY2MRhFHqT_v5JVYeVZdeaHI8p6MOp4KfIDZOuuZkcUUgIMU16FmQjmzagINvi_40U8FrH1rXrh-Oza-KwOyoHWr6jlB70nC2nf6XX_k7_cVv_wYe3rmI_pBEewr6qGM-g_WnU5rZBPkY_p0B-JryCITq_693x4c2bGAckBWo9lQgpNoWsdPMsoax34yc7eO5hRernCM113v78P2bWbzIxyD8voDSTYk6MASWe4KtiBlQP-Xa3FR_ecLHII-L-VeR_I-Jkizg4hniS-eNl3axpOsTtA6IB4NOwjmeZtkPs8I7bRYkxzoJ8vMQP49_e1m_76gD0G1tjNrcOE841IyshtWF0b0sr7JpjHB1RFc4w7m-ok7LkmzlRhhH-KvXvYuGQ-p6JWoHZ09qtkt-gU2qr4gUc28S7BqFhAeY4gP3hD6S8E7k8OaUuW2z2vOkZz7ZuwONaGCvS2AvGiPR9DvnziW6b-A5XXJHvxRFO3vKzVnw1Y3ogtYf6cIFtiLpQ2nabeDJKVZHvuXHwpqMvZrfP8rEE8TCfE90-91SVeBQ9KWwfegYtBv_wI6zYhTD2-mmy38k-lnYlu8o0I6Wt3brFBozXMN6qr3ulgCB8o5l-IIKsbMycoVTKuqWqRH2IJOs_cQ69Vm--N87iXQhhEETGsTRnJXAmdlOTHbpFejK6fxeP_Ul2qTuhjapPKthKeXpqQK8G67DPiQJhrHt0Dre1fr9LOz4eK8bEC9yd1Tt-tkIjWoMeGTz2hNKVct1zeX8sshjyt5CdwNTWDVuBHKkbXJpGEKASVC5VMaX72XP_pESn5O5z_8mRXhMF2bI0avDsaCErReFhpRz_ZhAse_Hl_u5pJoWBP81eZNzJyqM6w13LnrSJcshDl7m7ODKyaHFpiv0AlUpS0PqqyvP6LMUp2e3Lqm15d2XV7G90NA9NzCAnFTfLDDjYluPY5DZF7Ovtrc8fI_lBEcWBmqbFVJu9xPlcHwaZ12i2Fh12tYF_pLxyKcmh7zgPnKnH0jwQJj6wcv4ZYb_XJFp3aUg6OFi6R_Y9PoYod1U8OHLTNdf-yCLTpQROPOj9HgV-UCm9ea7kl0v9WJfqH6_5GBLc96S6vOgSZjKyTwPPS-m_0lV-wgjYHTvyx7VuMQaXkn5m1SVnZiqy-U4B9DFY_1fY1skRh8tYrztZHBxrh2ky8YNfFdKPDOdNO9ptjgRju3qapD796TQzlHLXp8_u50RpUEc6vb9T3EOx4y6wBWN3Aegkdo-3DO0eBl2TZrdi97GJUUysniAfz1-Hs9v1CcZtCuAJCbIgQQVhYnjaPwhQtuHZ3uQhAexFE89NEqQNac_Hh1508AWds-zSzyb-hJzBpRfF2POSMPLO1pc0it2IpmTiY0jSOAuCCQQkSLJJSgOg2Rm7xC7GHsaxG2IceBc485LU80MaE5wkgesELhSE8QsrwgupVmf1ezCX4ST2gjNOUuC6fsEKYwFfUX3TwdgJr8_UZf3KSVqttBO4nGmjX6kYZnj9Zlatg_Aa3YkXwllWixYxUVYGUVJp0M3rNc0bRMdeEjqrFL_8_jd6amb-FwAA____X1zV">