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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] SCCP assertion crash in forward data flow analysis
        </td>
    </tr>

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

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

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

<pre>
    
With the git version at afa7c5ddc6bd35213948eb91b434e3c04e6b14bc (Apr 15, 2022) along with the branch op interface for `affine.for` at https://reviews.llvm.org/D123568: 

$ bin/mlir-opt -allow-unregistered-dialect test.mlir -pass-pipeline="func.func(sccp)"

```
func @affine_loop_zero_iter(%arg0 : index, %arg1 : index, %arg2 : index) -> i32 {
  %s0 = arith.constant 0 : i32
  %result = affine.for %i = 0 to 0 iter_args(%si = %s0) -> (i32) {
    %sn = arith.addi %si, %si : i32
    affine.yield %sn : i32
  }
  return %result : i32
}
```

```
mlir/lib/Analysis/DataFlowAnalysis.cpp:464: auto (anonymous namespace)::ForwardDataFlowSolver::visitRegionBranchOperation(mlir::RegionBranchOpInterface, ArrayRef<mlir::detail::AbstractLatticeElement *>)::(anonymous class)::operator()(Optional<unsigned int>) const: Assertion `index && "expected valid region index"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
 #0 0x0000000000fdf023 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/uday/llvm-project-upstream/build/bin/mlir-opt+0xfdf023)
 #1 0x0000000000fdcd5e llvm::sys::RunSignalHandlers() (/home/uday/llvm-project-upstream/build/bin/mlir-opt+0xfdcd5e)
 #2 0x0000000000fdf61f SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fc4b3e0f3c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #4 0x00007fc4b21bc03b raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007fc4b219b859 abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007fc4b219b729 get_sysdep_segment_value /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007fc4b219b729 _nl_load_domain /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007fc4b21ad006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
 #9 0x0000000002056c78 (/home/uday/llvm-project-upstream/build/bin/mlir-opt+0x2056c78)
#10 0x00000000020559ae (anonymous namespace)::ForwardDataFlowSolver::visitRegionSuccessors(mlir::Operation*, llvm::ArrayRef<mlir::RegionSuccessor>, llvm::function_ref<mlir::OperandRange (llvm::Optional<unsigned int>)>) DataFlowAnalysis.cpp:0:0
#11 0x0000000002052635 (anonymous namespace)::ForwardDataFlowSolver::visitOperation(mlir::Operation*) DataFlowAnalysis.cpp:0:0
#12 0x00000000020500dc mlir::detail::ForwardDataFlowAnalysisBase::run(mlir::Operation*) (/home/uday/llvm-project-upstream/build/bin/mlir-opt+0x20500dc)
#13 0x000000000204dcab (anonymous namespace)::SCCP::runOnOperation() SCCP.cpp:0:0
#14 0x0000000002020f73 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/uday/llvm-project-upstream/build/bin/mlir-opt+0x2020f73)
#15 0x0000000002021804 mlir::detail::OpToOpPassAdaptor::runPipeline(llvm::iterator_range<llvm::pointee_iterator<std::unique_ptr<mlir::Pass, std::default_delete<mlir::Pass> >*, mlir::Pass> >, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/uday/llvm-project-upstream/build/bin/mlir-opt+0x2021804)
#16 0x0000000002025fd5 auto mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_8::operator()<std::pair<mlir::Operation*, mlir::AnalysisManager> >(std::pair<mlir::Operation*, mlir::AnalysisManager>&) const Pass.cpp:0:0
#17 0x00000000020272ad std::_Function_handler<void (), mlir::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<std::pair<mlir::Operation*, mlir::AnalysisManager>*, std::vector<std::pair<mlir::Operation*, mlir::AnalysisManager>, std::allocator<std::pair<mlir::Operation*, mlir::AnalysisManager> > > >, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_8&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<std::pair<mlir::Operation*, mlir::AnalysisManager>*, std::vector<std::pair<mlir::Operation*, mlir::AnalysisManager>, std::allocator<std::pair<mlir::Operation*, mlir::AnalysisManager> > > >, __gnu_cxx::__normal_iterator<std::pair<mlir::Operation*, mlir::AnalysisManager>*, std::vector<std::pair<mlir::Operation*, mlir::AnalysisManager>, std::allocator<std::pair<mlir::Operation*, mlir::AnalysisManager> > > >, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_8&)::'lambda'()>::_M_invoke(std::_Any_data const&) Pass.cpp:0:0
#18 0x0000000002026c8c std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()>::_M_invoke(std::_Any_data const&) Pass.cpp:0:0
#19 0x0000000002028d25 void* llvm::thread::ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::$_0> >(void*) ThreadPool.cpp:0:0
#20 0x00007fc4b3e03609 start_thread /build/glibc-sMfBJT/glibc-2.31/nptl/pthread_create.c:478:7
#21 0x00007fc4b2298163 __clone /build/glibc-sMfBJT/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/uday/llvm-project-upstream/build/bin/FileCheck /home/uday/llvm-project-upstream/mlir/test/Transforms/sccp-structured.mlir
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWUtv4zgS_jXKhbCht-RDDo6TYLPoRgdJgD0KFEnZ3JZFLSkl9v76raJk6zHu2fS0B5jDBI4tkVTVV8V6Urnix1vHvXfc9b9ksyPNTpCtbMi70EaqitCG0IImLOKcxTkPIt8LVmEq8pWXh0EoAuaGIs69MGfE8dN1rYkXOf6G-K7vO_6K0FJVW_Jxop1rWrEdUTWRVSN0QZkghdLEiV1aFLISS7iDG2S8a5raOMHa8R_ho8W7FB9mWZbv-6XSWxi69_wgilNYQjoR-m8_JLmsYMG-lHqh6oYsaFmqj0VbabGVBhgLvuCSloI1pBGmWeJKsqipMYta1qIEJE5w7_h-0VZsiV8gnWGsBplgdMIudvuPvcW1xAl7cbJSqTr7r9Aqk8AWiDh-RPXWJYhaVlwcUFvdoHdp0B8PrsjCCR6IDGA0uesYElxokOA9oRoUvWSqMg2tGtJzCfzRSi1MWzbd6rPGcULaMZc0Cr4QbAbcTYfYdJOW0RkFTCFpuB1h6dBUIzSUc2kHZS-UJTaBRU5QjlKU_ExhCj25P11q0bS6mggzWnpeONuYi4O472Aopczhe13R8mikQdOiDX0EkzkNLVldA5cwDpEXbUFJID6tVHXcq9aQiu6FqcGa0T7AZIP1o9IfVPMToVdVgk91U-_SyOYFLFFVd9YfvtVC0wZugaZFZJdNVzyd_AW1uNaaHl9E4QSbYT0XDZVld73OTaMpa77QppFMPJRiL8AgHB8mH84YJyKwEqz_PKUsJNVZLJh8-q1GgBTob9rKyG0lOPpwR45Yk0PVrI0RGleiS1urBaYxfODHF4caPA4efKel5ERbAU-2DZaUkAIkEHzZbc7zl4f16wMxbb6HkERJ3m7hmVrpBo10Gh5gbhIbCK0QHytbLmzkYZqaHckp-46KET0LQBW4xD2457-CF64fECTVacIcTXfxrEHe1wYovGm7D-mwSNOPTIHKBd1bcTdWN-gaqL_HndrD-seW0yNaGzy2qLX6Nyhj0danx0AGWXL8nQQvx79zDx0q3IkzbG8Gm_FIXIL90lavsF20_AeopIS43m3p9ZAh4wkyf67Q2CvIBAOGjk4_3fDJv1z7fyYU9ISSgoV5INwC0g3JMvB6sEyR6aYXonPfQxpncbiA2N0eFtuq7SbqZgdC8KVRS9cC9kKgMsEbjtn4Xs7cICeaSiPISPYtEGML87W4--fb-dZfBh7cGCsFXCyXeHc0XNQYRtpKHrqBd4sGkGEqQ9JLBrJGHnx5A5JoimSVpxGk0FxZST-HpOGdNuxTlkmKTJKBSTxnksA-bEWTdbgzI7YYLDJw0vbTGoDtRPlLRfnebBntWEcuhpN04J1c4p1VZYYPZlztqax-jeUqQSMKwoFnOuVJuevGnzAchiYTW5MJQnhkYjKrsYn7bhSzJL2WR_XkzvzQ190Zv2hFxXUy0GvLmDBG2bgwJJNRSlpjOBsCy8XcM6Nls8L4IayKkBr47vRBy6fiL7TaWoGGR3434fRp5wdpehRGUHneTHl-DI72i8q7nLKnWvssPn-Gz3U5I5fz-gzWie4dNaJPRO3vI7qejSLKiY0GUzFCzmj-_9T8utk8n4F_q8ZatdkBpi_rLJwy890iCX6gs2_1m_pWP0N1s-a0xprmoqaebfljjf3HbjDMnFT_lVZ0ixltQ3KlSvydmOs1dW6lnOg8mqnBS93wp9XwfOp4xu6HHQAWgJlG1wQnHKZqhc2byE5LYBLSTjcHGe8_rcjqRk_cvFPuhpzXcVFQKN0zLkrRiN-uxf4CfXym9cnclTdqzucJSlrdYirEMvgCkGFBx7mb6JX5TDVMPFWF6ovjK_uf3eqJLcQzW4gKHnWtys8axMgRoY6s2NO-Bn2lndrOvUOYpRd7hZE11FTq34b7T23TaZPT6xCzVXnfpxCU-XJYSWY6THzKB6PNHk9pbNfXscHmXUlOTl3SGMMXtZWMli9dizqMY4tD8xINhJalKCGkP1C2A1JZBsVHxg6HnltWKb2n5UU_-0VlrCfO-A6Gd1XyI9p48sKuip6M_qdrr23dYDPWBAcOX788vWwURL9D0yP9e9P-0Kb9rba_nq0PA0lJ9zmncHGK6Q_9Pn3NZPWuvotxYM7W1THjUJKeMp0NtT8OsuksyMYsZT8VZIdS5M02988ojr1ncNuIN2q-ryv-2DatniA9tSEzkpMjsT9X9lnj6KfcjwhiAWMYydUdWkxk1OpwHNtV09bltC6bK2Or1cf5pGXYa3fIrT1jhDw8fBG4787OYoLYXcGmUd1kHdjPtu1Vbdv2_lwm63bMtu5hggVFMvD0Jp27v0q9OIDIwUpVffpgYi8N--zBTHcQABeWw_LVweOEQQ2PshSbnWDfidDaOhlBK7F7AiUaajQh0hCxr5vjcv4MU_s9Hkp27xbsYfwfqgMHip8m0J9y45sO-HmDit4UEG5REfhOY4FlLENf4fZFyOyk_IbfBnwVrOhNI5tS3DrRHaZBJ7q3_Rmh5yPf7oxVVvhKB9tUYh2jgEaV0D603bS6vJ0e3W5ls2vzJeinF2EmCR71GNMKhBuFKz-92d1GqZsHUVT4PCko9SOPFXkQexG0pckqFu4NlFiiNIjV8f1KfBBLAk-Zo_sbeYuvp9wQ1q_8VZguBQuLeCU8GiSi8JLcCV2xh_B6PlG-0bcWEh4zw2QpTTMcN9-ABrCPsKpB-lB075S-zVXFd-22LemN5X5r0f8PQBJcMQ">