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

    <tr>
        <th>Summary</th>
        <td>
            Clang aborts for collapse clause with imprefect nested loops [OpenMP 5.1]
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            openmp,
            clang:codegen
      </td>
    </tr>

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

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

<pre>
        Variable **jb** defined in outer loop causing the clang to abort: 
Initial investigation showed that the variable jb was not registered in LocalDeclMap.
$ cat -n test.c
     1  void func( double *A, int N, int M, int NB ) {
     2  #pragma omp parallel
     3      {
     4 int nblks = (N-1)/NB;
     5          int lnb = ((N-1)/NB)*NB;
 6  #pragma omp for collapse(2)
     7          for (int jblk = 0 ; jblk < nblks ; jblk++ ) {
     8              **int jb = (jblk == nblks - 1 ? lnb : NB);**
     9              for ( int jk = 0 ; jk < jb ; jk++ ) {
 10              }
    11          }
    12      }
    13 }

        $ clang --version
                clang version 16.0.0 (https://github.com/llvm/llvm-project.git a28f3f8e48cb3935d413d3b9c0fcd5f72dcd5b8a)
                ...
        $ clang -c -fopenmp test.c
                DeclRefExpr for Decl not entered in LocalDeclMap?
                UNREACHABLE executed at /home/user/llvm-flang-src/llvm-project/clang/lib/CodeGen/CGExpr.cpp:2842!
                PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
                Stack dump:
                0.      Program arguments: /home/user/llvm-flang-src/llvm-project/install_rel/bin/clang -c -fopenmp test.c
                1.      <eof> parser at end of file
                2.      Per-file LLVM IR generation
                3.      test.c:1:6: Generating code for declaration 'func'
                4.      test.c:3:5: LLVM IR generation of compound statement ('{}')
                 #0 0x00007f10ccd3de63 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/user/llvm-flang-src/llvm-project/llvm/lib/Support/Unix/Signals.inc:567:13
                 #1 0x00007f10ccd3bc4e llvm::sys::RunSignalHandlers() /home/user/llvm-flang-src/llvm-project/llvm/lib/Support/Signals.cpp:105:18
                 #2 0x00007f10ccd3d28d llvm::sys::CleanupOnSignal(unsigned long) /home/user/llvm-flang-src/llvm-project/llvm/lib/Support/Unix/Signals.inc:0:3
                 #3 0x00007f10ccc4833e (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /home/user/llvm-flang-src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:77:5
                 #4 0x00007f10ccc48590 CrashRecoverySignalHandler(int) /home/user/llvm-flang-src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:398:1
                 #5 0x00007f10cc5d0520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
                 #6 0x00007f10cc624a7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
                 #7 0x00007f10cc624a7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
                 #8 0x00007f10cc624a7c pthread_kill ./nptl/pthread_kill.c:89:10
                 #9 0x00007f10cc5d0476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
                #10 0x00007f10cc5b67f3 abort ./stdlib/abort.c:81:7
                #11 0x00007f10ccc5d7f1 (/home/user/llvm-flang-src/llvm-project/install_rel/bin/../lib/libLLVMSupport.so.16git+0x1747f1)
                #12 0x00007f10d0cf0468 clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(clang::DeclRefExpr const*) /home/user/llvm-flang-src/llvm-project/clang/lib/CodeGen/CGExpr.cpp:0:0
                #13 0x00007f10d0ce2541 clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) /home/user/llvm-flang-src/llvm-project/clang/lib/CodeGen/CGExpr.cpp:0:12
                #14 0x00007f10d0cec9ab clang::CodeGen::CodeGenFunction::EmitCheckedLValue(clang::Expr const*, clang::CodeGen::CodeGenFunction::TypeCheckKind) /home/user/llvm-flang-src/llvm-project/clang/lib/CodeGen/CGExpr.cpp:1241:8
                ......
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WN1y2zjSfRropkssEuDvhS4k2cqkPieTcmZy6wJBkIINASwAdOy3_wogFVNc7Ww8uxlVWSL-Tp_T6G6AptaKTnG-QdkOZTcrOrijNpsnYah6cv2q1s3rBsXVN2oErSUHhLcIbx_r8Rca3grFGxAK9OC4Aal1D4wOVqgO3JEDk9Q_aaC1Ng6RLaD4BsXbj0o4QSUI9cytEx11QiuwR_2dN-CO1IXVz2e7jzV8pxaUdmB4J6zjZjR7pxmVN5zJT7SPRmiEU2DUwVqB49ZFbOwG_0kAnrVooB0UQ7iERg-TrC3CexDKwefzw6cfPTtAuAJU7GZIGABh0hvanSjoUw89NVRKLmdzSPheLEwDpqrlkwVEbgDh8vM6QbhC-PB5h8h8bgY_Pn6RVPV5yWKV_93OV-dLeq02wLSUtLcc4RL7JW-GijdDfiLCpbf3WMunYDAGRHbn5v4H-bEL4R3C11xUwsVnjJkR9yzjbME3R9Q1JIDIYdK6hVEc2Y2rZ-jVJfpEO_jp8YL1yDnY9K2rdJN4wbW4eTOVJP9uAF_rJG_t83cVYjKkwnr9zI0VWr2NxdU4NA1AkkdxFHs1R-d6i8gW4QPCh06441BHTJ8QPkj5fP5Z90Y_cuaiTjiguGxJW_K0ZDWpSNakCWlIXbG4ZU3WFrhhTVaX9Mf-jwyiKLpGlsG61T1Xp_4il8Y1Pu3ueXv70pvgft8OKcrV1fxE5DBf_ufn-9vt_rft7u4W-Atng-MNUAcIH476xBE-DJabs8bWE1pbwxaiET4Err5b1Agf9rrhH7jyTx88tYj1PSJbXKYY4WRO4Mvd7fbrLdihPnnHQT10YHivjfMF632-R_ggrB24RfgAVHntTA4NH4ugofYINWVPzlDGfV3pDe-NZtxa3oDVgxm7_UpqrWaCem-YQYFlRvQumhP_6ih7gmY4eWHzgTgaA_KL0Z2hJ6CmG05cORsK73v9KpR1VMoHwyXCh1qos6__Q1wkEwtE9ly3iNz62mi58ZvLVQO6hVZIPl-Cz8S5WfsxuLv79gk-3kPHFTfhcJhPJ9P0yTbZJohscy_ywzRfdcB0w0NcNpxJOoIAwsVY-4s5XrrEI4hsM4_3rzw8faZPvR5UA9ZRx72Hx5pc-IpS3PiHy_TyxTiG-CWO47hok5ixhjQ8JxBCiWwR2dpXOz58MUK5sMV_jNFSvk0y9PuDts5wekI4nw6oUMreu7nnGA4583XofdgjfPhTiRffITpFpY2E8t7I8sL7mCwVJQtFNUv5NUX3gxoBf6OqkdzY4Kz_Hekz2zHTk9jvXFIu2eKl_3HZXGO7l5yqof994oxwOahwTWpAal9ofrG34xB_C_LkgjxLS0L8taWkSqvXkx4sKHritg8BU01CfNm550w_c_O618rxF_fx1MtxdNyLMGc87n00_TKl17hM-1UUIdkWgtOl4KyK4QLlIqTOEv4RxqQqQ81ZUM4uKGdNnOF4rAsT-EuZP-TpWgo1vKw7NYwDLLI6yhHexS8pznB8pXTkF8g5TmnB4OGhd0fDafPwJKR8EKdehlI0VqkI4YPqna_c82mhuqWpd3u-tFL8jBV_tCsq_xK_CO6Jl_jlNfz54r8ELauroNXS6WmRQ2dDbAQ8O2XxIQqtV9vw3p_SvbYh-QwVlgcLuAinyMyAr3GXZTur86Il49vMCO-acXND18jUn0bFEueyWLKsKdpkio7__lgO2kYeUtT-0JoC2cdWknfChfhKirRok0WAeXLz2tjErI3TvBzvgFMpmS5V88ZhUCwczKHz9iTcdCG8-0bl4M-tGcD8rsi0si7c5_9Gtv7UZS8OfwuN5FIjx1mavF_jNXH_oKoEL2WlC1msovX7Ze2PnD3x5ifU7d8H_sdrzwP4_wnV_DrfJDj1WVcu3mmiKFo1G9JUpKIrvknyIk-LOM-z1XFTl7QgHFckqZosp3FDy6KqSZ5mhFHCkpXY4BiTGCdZkiZFmkW0IDHOY5oTQtuKEpTG_ESFjDzjSJtuFd4BNnlc5OVK0ppLG_61gvF4WUYYI7xHGJ9d6O-onVeDUXazMpsgvR46i9JYCuvsG7QTTvLNPty_Q62xF-_0flcGy-G7cEcQp97wljMHilsXjnPdW0DZ7veeq09fIIsSb3AwcvP333OCzP8PAAD__5agbFA">