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

    <tr>
        <th>Summary</th>
        <td>
            [flang] [OpenMP] flang-new crashes with "mlir::Operation *mlir::Block::getTerminator(): Assertion `!empty() && back().mightHaveTrait<OpTrait::IsTerminator>()' failed."
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Test case:
```console
$ cat bar.f90
program bar
    implicit none
    integer :: i
 integer :: x(10)
    x = 0
    !$omp do
    do i=1, 10
 x(i) = foo(i)
    end do

    !$omp do
    do i=1,10
    if (x(i) /= i + 1) stop 2
    end do

    contains

 function foo(i)
            implicit none
            integer :: i
 integer :: foo

            foo = i + 1
        end function foo

end program bar
```

Stack dump:
```console
 #0 0x00005579906db6ac llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
 #1 0x00005579906dbcee SignalHandler(int) Signals.cpp:0:0
 #2 0x00007faf51e63520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007faf51eb7a7c pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x96a7c)
 #4 0x00007faf51e63476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007faf51e497f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x00007faf51e4971b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x00007faf51e5ae96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x0000557992f27582 mlir::Block::getNumSuccessors()
 #9 0x0000557991cd68d3 deleteDeadness(mlir::RewriterBase&, llvm::MutableArrayRef<mlir::Region>, (anonymous namespace)::LiveMap&) RegionUtils.cpp:0:0
#10 0x0000557991cd6a5b deleteDeadness(mlir::RewriterBase&, llvm::MutableArrayRef<mlir::Region>, (anonymous namespace)::LiveMap&) RegionUtils.cpp:0:0
#11 0x0000557991cd6150 mlir::runRegionDCE(mlir::RewriterBase&, llvm::MutableArrayRef<mlir::Region>)
#12 0x0000557991cd6cc0 mlir::simplifyRegions(mlir::RewriterBase&, llvm::MutableArrayRef<mlir::Region>)
#13 0x0000557990b7bcdb (anonymous namespace)::FirConverter::lowerFunc(Fortran::lower::pft::FunctionLikeUnit&) Bridge.cpp:0:0
#14 0x0000557990b46e30 Fortran::lower::LoweringBridge::lower(Fortran::parser::Program const&, Fortran::semantics::SemanticsContext const&)
#15 0x0000557990ab51bd Fortran::frontend::CodeGenAction::beginSourceFileAction()
#16 0x00005579906fa479 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&)
#17 0x00005579906f329a Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&)
#18 0x00005579906fcf28 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*)
#19 0x00005579903de512 fc1_main(llvm::ArrayRef<char const*>, char const*)
#20 0x00005579903dc6e0 main
#21 0x00007faf51e4ad90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#22 0x00007faf51e4ae40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#23 0x00005579903dbc65 _start
flang-new: error: unable to execute command: Aborted
flang-new: error: flang frontend command failed due to signal (use -v to see invocation)
flang-new version 17.0.0 (https://github.com/llvm/llvm-project.git 2d68a42f084a460007b368eab191cf0ff1b976d7)
Target: x86_64-unknown-linux-gnu
Thread model: posix
```

Program arguments:
```console
flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-obj -fopenmp -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu x86-64 -o /tmp/bar-f3e9a6.o -x f95-cpp-input bar.f90
```

cf.
https://github.com/llvm/llvm-project/blob/9884eb149e612027b48fc76cebb9fbbd6e5f7513/mlir/lib/IR/Block.cpp#L233
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWF9v46gW_zTkBTnC-P9DHtJ2c3ekmTujafe5wvjgsLXBAtym3_4K22lsT6fdSPtyo1YxB87vd_5xwGHWyloB7FByg5K7DevdUZvdU8CM0S92U-rqdfcA1mHOLKBoj8gdInuUkvGPa2V1A5OUxpgzh0tmtqIgo7Azujas9cJRgDHGsu0ayaXDSiuYiZWDGgz2PNEey2lmJT4hmocE0eKieMIousPkIkA0RDTWbYcrfZFWGksU3YWI3uLwvNrDSUSLAUJoPQ0vWqCqN5QrGMKZOVJgRPMLEz14MokRvcGhl1inO0w_4-RaOSaVXchFr7iTWr1r-_nzm4C_Tf-jwHuClUXnj9Aaz11aLPDOLKycgfi5X0rkrbzmK-8d40-46tvukzLEiEYEkxMhhCRJVhQkrcqUcdw0z-3oin2148MPI5UbkB8M44Bofllk2Mujts4AaxFNfc1I5S7RRTQK1ywcAN_LWrHmT6aqBoxPyKA0ie2Wd95-Mvy_AdEJKBNMJCGkUUKJrxhED40sET2c8vQxjYNGqv4U1KofJ_jW6m2K6A05xTShZGFctMQsM5Zx3LmjAVY9PsmmuY6gSFnGFwTx2ug4S3FtBz-vNT7O0gV2ssSOi0xEmJXauOuQaZ6JaIGc_oIclldjhuUCM1tiJgyK9DrMqIBiGYF8XltU0CzJKW4bacbivGk0fxofa3D_7dv7nnOwVhs7EM-QijlSyKs0ryJcQQMO7oBVCqxXuUD_hBcjHZgb3_HHwr9sim-9Y2UDe2PY608QKLqdK9ZSKxT94VUQzZnS6rXVvcWKtWC7YYMV49qv8hm-sW7AL_Co-ZeT720Qv9HI2geWlP9vPoRrH8KEzDJqejVC3N3-8a_7UlzMoGszOJ-bYYejQryOyv9-VGeWRIv2WWYlr8rPYn6Q5larZzAOJuxGv4A59Iojmh-0cYap2cT42Ak3qU_H0Ff5BH8p6abc3RhZ1fB-2uKllXEKEcG_I_rqH6WqR8D59Mq4jhl7VvoxnX_-FHNTXBeLLbRMOcmnQ-v-PLzVysHJzRRn0U0WdrMyCctqCSuM11fVOLrVFfwH1H6IzygqoZbqXveGw0E2ME3N2ovnSZeHoGBxVnzEc5hGHxCtg7U2tO1kA-aLso4pDu9F7H3KL6rrnSd4P2LZypOIFuzjiK0MGaRwAt67S7D-eShW5uQrc7ig-UfmTMQXq541Z58b8Ws49wszFscHiSpIQooFDx9bJtXiwjTb-vzIzDnI-6mbLmUzCkpWFDwFggf4tyXh6thmVXHlDYkWVUEWtHSNCTHBj49e7dE6Ztzg4rUsEC9ZopVzJU8TPOKPi0TDVB0oePF3bDBG-7aAe-W7KXYaT3nFXLctG7KG9_4mBNVH-oMUn1N9VsaCyQYqXPUD9OWy1lvAwfMgA8ByVjvFigU_g7H-Jh9mW7IdknB0rht6Ez0geqilO_blluvWR8dXx_gVdEb_Ddxta-kwrdKcxVSQPGZx6pNQRmkOrAyLkAsiRFgWWVplb_wPzNTghve_MQe9elL6Rc1yMa4bLri41RU0fnWnrTx98Fpxbr7M1H0LytlP3i4ucQgED3HgjOwa-K1ROIBWukCXf-NA6A5U23lF3WgTVJLVSlvfyXHQGmimmAeD8biTHAed5EEDz9BgOg6kDToJOHBDPALe9Z47SGMcaP9i6doO0UPJTCAiKFi61Tg4YVEkAe-6QPoOuHxBfzcqXGzHh-tS65kb7TdKkecxlGFcQBpSQrMyzgXPUg5lWYiyrFJIRJaEEaKH4Zpw3mBffiJ6GC63w2lMo680ijbVLqqKqGAb2IVpTmiWxUW8Oe6YYHGURWFFWByGYQJJWQioBIsYiKKINnJHCY1IFIVhEsdJvC0LEqUsyRJCRFiKGMUEWiabrXdjq029kdb2sEvDPMs2DSuhscOPI5T6nA-TiFKU3G3MbnC97GuLYtJI6-wFxUnXDL-qDPWCkjuMkpvvHahvP_zgUkXcMHsEi1-kO2JE6eXS9L0DM9QDRnT_u5v_A5hWKua0mc5l3x2sBTMqpgTRENrOvY7TeDhkUlwy_jRKtq2sj-5P9gwPhkmHotvv3fTkKb7YGYPv4wMJzaZGskWUbnrT7K6ukyGSFtHDEOn_BQAA__8iFG_c">