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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] llvm-project/flang/lib/Lower/Bridge.cpp:2027: void (anonymous namespace)::FirConverter::genFIRIncrementLoopBegin((anonymous namespace)::IncrementLoopNestInfo &): Assertion `latchBlock && "missing masked concurrent loop latch block"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

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

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

<pre>
    Crash itself is reproducible on Godbolt:
https://godbolt.org/z/9MdKzjeYY

Reproducer:
```console
integer :: i

do 30 concurrent(i=10:0:-2, i/=5)
30 continue
goto 30
end
```

With assertion-enabled flang-new, compiling the reproducer resulted in the following assertion failure:
```txt
llvm-project/flang/lib/Lower/Bridge.cpp:2027: void (anonymous namespace)::FirConverter::genFIRIncrementLoopBegin((anonymous namespace)::IncrementLoopNestInfo &): Assertion `latchBlock && "missing masked concurrent loop latch block"' failed.
``` 

Stack dump from Godbolt:
```console
/app/example.f90:5:1: warning: branch into loop body from outside
  goto 30
  ^^^^^^^
/app/example.f90:3:1: the loop branched into
  do 30 concurrent(i=10:0:-2, i/=5)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -S -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -resource-dir /opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/.. -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
 #0 0x0000000003831598 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x3831598)
 #1 0x000000000382ef0c SignalHandler(int) Signals.cpp:0:0
 #2 0x000076330fe42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x0000000007f30b1f mlir::Operation::create(mlir::Location, mlir::OperationName, mlir::TypeRange, mlir::ValueRange, mlir::DictionaryAttr, mlir::OpaqueProperties, mlir::BlockRange, unsigned int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x7f30b1f)
 #4 0x0000000007f30e60 mlir::Operation::create(mlir::Location, mlir::OperationName, mlir::TypeRange, mlir::ValueRange, mlir::NamedAttrList&&, mlir::OpaqueProperties, mlir::BlockRange, mlir::RegionRange) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x7f30e60)
 #5 0x0000000007f31387 mlir::Operation::create(mlir::OperationState const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x7f31387)
 #6 0x0000000007e9590f mlir::OpBuilder::create(mlir::OperationState const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x7e9590f)
 #7 0x0000000003c107e4 mlir::cf::CondBranchOp mlir::OpBuilder::create<mlir::cf::CondBranchOp, mlir::Value&, mlir::Block*&, std::nullopt_t const&, mlir::Block*&, std::nullopt_t const&>(mlir::Location, mlir::Value&, mlir::Block*&, std::nullopt_t const&, mlir::Block*&, std::nullopt_t const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x3c107e4)
 #8 0x0000000003c1092d (anonymous namespace)::FirConverter::genConditionalBranch(mlir::Value, mlir::Block*, mlir::Block*) Bridge.cpp:0:0
 #9 0x0000000003c31d4d (anonymous namespace)::FirConverter::genFIRIncrementLoopBegin(llvm::SmallVector<(anonymous namespace)::IncrementLoopInfo, 8u>&) Bridge.cpp:0:0
#10 0x0000000003c465e0 (anonymous namespace)::FirConverter::genFIR(Fortran::parser::DoConstruct const&) Bridge.cpp:0:0
#11 0x0000000003c2ef4c (anonymous namespace)::FirConverter::lowerFunc(Fortran::lower::pft::FunctionLikeUnit&) Bridge.cpp:0:0
#12 0x0000000003c20c40 Fortran::lower::LoweringBridge::lower(Fortran::parser::Program const&, Fortran::semantics::SemanticsContext const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x3c20c40)
#13 0x0000000003bb4856 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x3bb4856)
#14 0x0000000003881f85 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x3881f85)
#15 0x00000000038710d7 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x38710d7)
#16 0x0000000003887f4b Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x3887f4b)
#17 0x0000000001fc0fd8 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x1fc0fd8)
#18 0x0000000001eaf904 main (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x1eaf904)
#19 0x000076330fe29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#20 0x000076330fe29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#21 0x0000000001fbfe9e _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin/flang-new+0x1fbfe9e)
flang-new: error: unable to execute command: Segmentation fault (core dumped)
flang-new: error: flang frontend command failed due to signal (use -v to see invocation)
flang-new version 19.0.0git (https://github.com/llvm/llvm-project.git 9b31cc71d66064dfaf2afabf4a835211321bb4a0)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240525/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWVtz2zYW_jXwC4YaEryIfNCDLIXdzHrbTJztTp88IHhIoQYBLgDacn_9DkBKFhXHiT12tw_NKJaIyznn-84FF1JjeCsBVii9ROn2gg52p_TqNqBaq3tzUan6YbXR1OwwtwZEg7nBGnqt6oHxSgBWEv-k6koJi-I1CrcoXO-s7Y17IiUiZTv2LpRuESn_QKQs_lX_84_f4bffxuHj38-TUNBHOSgLxw9T0igBYyuXFlrQ2A2L15ifCqkVjkPMlGSD1iAtIjlH8TYKUbx2_wOCyAZzZ1i8TREpxmnjHMvlMOlolXWSxgeQ9Zk9pyr_w-0OU2NAW65kAJJWAmrcCCrbQMK9U8hU13PBZYvtDo70gcYazCAs1JhL39UoIdS9G3iUiBvKxaDha1bs3o4tQtx1Qa_V78AsIqVXjUgpeIVIeaXuQSNSXmpet7BgfY_iNQnJ0pF3p3iNEcmpVPKhU4PBknZgesrAkeMZLrneKHkH2o6uidctyPLj54-SaehA2iul-ktouUQk_46s2ZyfwdiPslEYkWwcgddH1CgLBbVsdykUux1HZBgR0nFjHD8dNbdQn7gaC6V67Ofgyk1ChCCy9PRBvTjjDp-68NpSdovroetxo1X3VTw_HYeIlLTvESlhT7tewKIpXIilKF5HDss91ZLL1v2sNJVsh7m0ajTTpdWoSw3W8HoSifEs8DBG6YcnPs-pjw_qXTiNurxyH2NWHQS_MlG-YdDbfrymT1cf1tcfsBmqjltMcTW0LnGUttgqfFZhuN0N1YKpzkW9uDt8neQEN2YAg0iJqXRMMDHU4DlivrhVlN1aTRkszkPiGAXhAoXFJ61aTTtMdTu4OHZGYERK1TstY56DDmDfC6V93jFfCJw5Y0mwepC3AQlJEqYkRaSsXOKUx3qBg4ZFOLCa9wLwPs9usiQY5K1U9zIQXA77oJUDDq5x0GkQilFfdzpVg8A9ZzjoOQsE3IHAZHzgJug54MBS3YINWD84uUGW4KBzhuHAPVLTBeZBWrpH8dYVWYEDDUYNmkFQc_0mMBcLHHSNph0EvXJKNIq3VAgcuDIwRbQabD_YhcHBHjdFGrC-D7jsB4ufDPopMkkc4nAfHv7FeRylRY59PPjiYx7M-OOT5tJ6D3_Rvjrlj4M0vb9RxmqgnS86G5c2iBTYF7c39DMil-F-MvIkv0gczVEQaEKGr3krqfgHlbVw2vLJqLHZTFV9TN6jIDIJWmZxHDaQkJSEE4xxaZiC6xhUYwdbGLXIvHl-ysy4-NS4ZROHVdTgTvBpZfilB-3jcXxkGqh1_D6OuJoC1jH7xLyfaQfzri8PPXymsj1r_pWK4an2LWdODtUPa2v1uRb63wE-adW7RcaVg9Nev9IcJQ7Sb4zqd3X_ROCM4eScYcjCvxTDTkDtyL3ixo4L8-tpfmz_DC1Xcup4R74hm0d0esZ3FOfLF_F9HHFtqQW3pk60vB8IZ-MMRDYDAUVahPO0vBy4qA_7t78CiNHGGYjlrPCxKFxCcgKCNeP3Rsn60u9pfum_izHePC_giZD_Kp4vx93keuowth7b5SCE6u2NPaHrlfPiDz-Qwv83695t9Rt9PAuC_DwICvK6E4rzMvdLgRidPWN44vJpQp5uLfDsCHW22BZzu-OoTt72ZPW4RbnuqBC_ArNKo3jzkhOXO205ePngIy57DpTbicw3VCzJUghfCwqRvFTaajpV0p5qcxixVRsXa3pg86h7zrb5NokRaBL2ctuEOx2Xg2Tn5vmOydLGTtMH6TcXV_wW_i35j1hJzqwMWRLibynyR3Uu21Hgafcz3B1OJKdZPhtsoKPScjZtfq8PjxslLez_lDT3sI9p7niZ7SPjqkryNJub3Whnn6wPNbuGn0Cu2eNSXLnEuPbHk5ILmLocgPfCMZo5w5HMN-t51OTpczjK6ekZIOfOPidiRPNRGkslg6c8_rTKj-4E5RT8CR4fiZgxlc6ZWkZhvXze42dAfSvsgQ320dk_TvW7wvVoZnCzs8BYNkn1HNwJ2CPqu-Me4GXhsH5PrzoUM5izPVvUsLCpc9yw6KajZ6vWWmv68BkaFG_YjupDEK79SrTB87b3gjBZOIMw23FEQJsiTLAz_51MGDXMTCjmJ3VS1MULT-p-yqlMEp7LhCTENzdu2o2xVNubE4w_rAXmdZxEc_9XDRSAR_nv5UGv42jEY2-8xqC12xOt8eBv4bFVeMorzFTXUZ81-BpatyGi0-36ILypTGnwF35Qf0e4b8WHPDxIni6acT14vcbfzDjBgwEc3Pk2AMxPEvtcC74DbZxRUbEIF2HLvWEvu-tcuFlFFUeMLaM6y8IsqRvaENrQqkloHqckimISVVVCH135xd8MOnDfunCcxu000Br7y0Y3uleG78cuX4GEgHrrt85vcFs4v3u_qFdxXcQFvYBVtIyyLM6WWXyxW8VZklKAJM-aJioaWLIorPMlVMsmzAuaXfDVQbBDnpBFRaBoiqZK07gCEhcoCaGjXCycQQul2wt_Xbwq4niZXwhagTD-BRkh07sVgtLthV554quhNSgJBTfWPEqw3Ar_Vq30M9It_vstzfff0lwMWqxef7k_OuxuRf4XAAD__4Uk3XQ">