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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Affine-loop-unroll Pass crashes with error message "expected 'from' to be contained within the map"
        </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>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/9e5fa4b4
Reproduced with: 
'mlir-opt --affine-loop-unroll temp.mlir'


temp.mlir:
```mlir 
module {
  func.func @func1() {
    %true_4 = arith.constant true
    %c1 = arith.constant 1 : index
    %103 = affine.for %arg2 = 0 to 40 iter_args(%arg3 = %true_4) -> (i1) {
      %324 = affine.max affine_map<(d0) -> (-d0 + 64, (d0 floordiv 8) ceildiv 64, -d0 - 16, d0 * -64)>(%c1)
      affine.yield %true_4 : i1
    }
    return
  }
}
```

trace:
```console
Assertion failed: (result && "expected 'from' to be contained within the map"), function lookupImpl, file BlockAndValueMapping.h, line 82.
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 --affine-loop-unroll 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                 0x0000000103746f48 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x0000000103747464 PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt                 0x0000000103745574 llvm::sys::RunSignalHandlers() + 148
3  mlir-opt                 0x0000000103748d34 SignalHandler(int) + 252
4  libsystem_platform.dylib 0x00000001966754c4 _sigtramp + 56
5  libsystem_pthread.dylib  0x000000019665dee0 pthread_kill + 288
6  libsystem_c.dylib        0x0000000196598340 abort + 168
7  libsystem_c.dylib        0x0000000196597754 err + 0
8  mlir-opt                 0x000000010380f868 mlir::Value mlir::BlockAndValueMapping::lookupImpl<mlir::Value>(mlir::Value) const + 128
9  mlir-opt                 0x000000010380f798 mlir::BlockAndValueMapping::lookup(mlir::Value) const + 40
10 mlir-opt                 0x0000000103947c34 generateUnrolledLoop(mlir::Block*, mlir::Value, unsigned long long, llvm::function_ref<mlir::Value (unsigned int, mlir::Value, mlir::OpBuilder)>, llvm::function_ref<void (unsigned int, mlir::Operation*, mlir::OpBuilder)>, mlir::ValueRange, mlir::ValueRange) + 608
11 mlir-opt                 0x00000001039473e0 mlir::loopUnrollByFactor(mlir::AffineForOp, unsigned long long, llvm::function_ref<void (unsigned int, mlir::Operation*, mlir::OpBuilder)>, bool) + 1096
12 mlir-opt                 0x00000001038e1b94 (anonymous namespace)::LoopUnroll::runOnAffineForOp(mlir::AffineForOp) + 332
13 mlir-opt                 0x00000001038d9664 (anonymous namespace)::LoopUnroll::runOnOperation() + 532
14 mlir-opt                 0x0000000107387070 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
15 mlir-opt                 0x0000000107387740 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
16 mlir-opt                 0x000000010739aaa8 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const + 240
17 mlir-opt                 0x000000010739a770 mlir::LogicalResult mlir::failableParallelForEach<std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) + 180
18 mlir-opt                 0x00000001073890b0 mlir::LogicalResult mlir::failableParallelForEach<std::__1::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::__1::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, std::__1::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::__1::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) + 84
19 mlir-opt                 0x0000000107388458 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) + 984
20 mlir-opt                 0x000000010738735c mlir::detail::OpToOpPassAdaptor::runOnOperation(bool) + 68
21 mlir-opt                 0x0000000107387058 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 488
22 mlir-opt                 0x0000000107387740 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
23 mlir-opt                 0x0000000107389984 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
24 mlir-opt                 0x000000010738975c mlir::PassManager::run(mlir::Operation*) + 864
25 mlir-opt                 0x000000010736ea34 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
26 mlir-opt                 0x000000010736e5c8 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*) + 496
27 mlir-opt                 0x000000010736e390 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
28 mlir-opt                 0x000000010736e2a4 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
29 mlir-opt                 0x0000000107579774 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
30 mlir-opt                 0x0000000107579258 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
31 mlir-opt                 0x000000010736bce4 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
32 mlir-opt                 0x000000010736beec 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
33 mlir-opt                 0x000000010736cab0 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
34 mlir-opt                 0x0000000102f65484 main + 148
35 dyld                     0x0000000120c21088 start + 516
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltv47YS_jXOC2FDou4PfnAuiwaIkSDZFmhfDEqibZ2lSR2Kysb99R2Ski3ZTlbJSXrSYoPAlnibmW9uHJqpyLfT-c31PUrrgilEFMrEZlMotFaqrEbebIS_wP-qUOs6nUAfvDD22H6NSyn-QzMFr3YePCQ0WBI_9UfO5ciZ3VMYktcZzdF3WARWRLZjhKMNK-RYlAqNx2S5LDgdMyHKcc2lYAwpuiknegiMbKZ0Pve9XtseOvZftzZENkCaUTSKzu07QsuaZxP9gUa-o7_dEY5HOOmOQWiEAyVruvDRyLtERALnIDyvFOEK6Z7e0Mw9NUw3zlDBc_rUG-06nh1uRJ4shdStRK6waXaQEsh3UKGoXEBrZfjT_XbajjXN9HjkXUFLXLhHIhhaHva7tDbkqXlcbEg58i5gau50FxrnDnydoxCWv0CmGy1BKzIvHpHBKaMF0y92hB4_Rm6on83UGRrrngTWs4xrgJMuWw0v24KyvAc0gOV2kIou9y-Sqlry9n3XtX9odd8zEUkyemweWkGCNRqcVRWVqhAcLUnBaG7sE8eSVjW4wwiDYCF8YfpUgplTzXC0lNoNIq2nlIK_cEVAIGvfBUdqTZFGF2MtOOCircyQABy_1eX1pmSmGeihcyaybzOe_0ZYTeekLAu-mqx1N4M1UYwnls-7m6vZwxWq6lQ7JwF3XQEopZBKs_FqZy2qqqZgWV8Q4TnYaMbqnBrOM0mqNUpJ9s3A15B_UNCA8npT7vB0oCu5k2IlyQZMf1VvKFeaCTTUrQ9WNviJWqFqu0kFQ5xsaKWVQXlVS4q2okZr8kiRkcUOKv6kEtjXfRLdzb7-gsCbKqqMKJQ_FlJwzRd6JOBloXNz89t88fD7_Pz25vqPq_uFngLNGsNSFNyAqYNYshcT7eU5_HOeHPsHLh354dKPDW96rjertpV9uJOwsBHzqzFIHO8HSfJ9ISolKdkYW7sAYZRxZfDBCFsW3MEsABM-OqD3UKw4Yb-AnhmFUBo_iiIHN22JgI8aIngwkSCI_FNy3te8R6tqAytQcf2GjDeYTJx7PjpkvoMODhp4fAS-kgIbYFmLkhEFEXUzybfQ2FkyCcMo8DMfLapiBaYN9qZXCUK7SNBbRK1BI3mzRn-RIKfUQc2IxbcCLNrC2AgYdhfK2iUOBUzCIIk9iPIk1S5sIAqbFaLBK0QgEaJSmvlN6IsHAhw7yziMUZtBvZmJQJ33U5HJ9nTCmHdxsIAN-4eNOm3otGgFbU0uGc5qlMSvYO1HHPgNVq4zjIHEjzIwxhXlVBJFfzWBjOY3ENV6pAxfxrcuDoHVTTUH09OJggm-Mh8mzu88qc0TC0mXx8jqSLhbwfjBSSL7ptvyHPZ0ufYbm41foKWDwssEbkstO8w4ku8EnQO-7glf0efbrT-HTmMWrjtYKx51OmvqLGN1c779QjIlZE87M5OLvgh5W75BG--MUCoE2wVHJ2mikIsHegR108TX7BAu-HYj6sqmy9IkmMSSvdnh0SSbmt_yHgrPoWP58rw2AXkD2cohQL6NrQ54u6QR7Oj7g-hHXhw5UdcicgpbM9Yq4au4Le9IVc1yUmrjaKn3cNADTijwOdXOID1tq6KaE05WWsGtajsG1klagduKFAwWKfJfL9JdUVK9geyJZofuOA3fXcbuJE3qGgKuNPtC7YqzlwZYyraj4f2OSOi45kthQ3dn0-KFTXXphgNhTAgh8ath7Ngl7HN4ZrfuceO8dtgI-wvXt8_CjDZxx-z9448gCDPnGhWjwW5aw7u8Fg1GJer5y41YFRlh97b62bfr2oikTKuEQOZjECauSAbF_EWlcjtksXDbh--SlAtdvvaS2EcAMDvKN--uVwD5YEujj0suoOijT6ox6s8Bwufg4mNV0WbMuLX0eGgYTZz0vS39kZo9xkcje0qzwJvIyN9AHZSq9Rp-Si_7qYAP8K24Ta3JUNeK_eC9U6vhJGlZwcPqNL1Z8oLsf2HlgIO2JMfDShKzAX0DFn_jBtRvzynwsFLj5wb05Q0oHlYa6QQE5nxAvZVnBxq06VPZ-E2gtMVkq-DBRVMS9ZzmFGcv8NREjR0gQwubkBLPR7CUPq6bmVK7-sHZaKv09ns_9kHUMqPz1bFVHeeRAQcu_d3BkXt2Lbhf0PcL-6D9PQIPLVNCGmQxKqXIaFWd18ulOfV8CZPj1FTz4r81XZRK56b91DndCLlt1zw1MadLAvIucsqoos9PblLSsT5-9P0xyO9HXBaEwZbgnq4KwGjbILSn-tUc2t4ZbnaW67eHL3ho1RRSL-lGxDk83ZZqTgr-iZX1_wH_tSZytDdx7ONRZf05oDxUca8cd9qQOLRICSkm_rNFylsU-ElRMoN0DzDL9G-NiyXvCfLTpT7WpXSt1R55fw4Ejz3JbCvaBDqwGAmiJOr9OvnvcZV_YARsM6s3sH4D7eFe-VSVrFAznt8dbIg-h-j_Ctt6ccTpbe3uB1xvaFkcphn1f-6YPjK827IUN_HSG1rdhyml2T9OM32U23r94gYq9orKtloPPw7uPux4F-iGngaEGUmfLyGas4xsTeypxUHZ-qBkwVf3YIqD5Wv5bH9-9IYdDuBlGPj62AL4OrjHE6B8y_Kjyf0FsJNh14lj0DlprrkEbnhwH--MTt0wTEI_8QPnLJ96eeIl5EwVitHpKDg3EgaXaHZ8l0xr395Yo5W5PqZvwwiJNpAswPHefHHvrJZs-vZLdUGCPf9sPfX8KAhwiqM8oYR6gRfESboMMsf1MXZdfMZISlmlhQSinH5HZgl9czC4PCum2DHDYjfwHB9PcBD56ZKm-nZtTINk5DsUNMMmmo-JkKszOTUspfWqgk4GdlDtOwErfVRmMNXrk1qthZxeAJBCXySsK-fM0J8a_v8CVmUr0w">