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

    <tr>
        <th>Summary</th>
        <td>
            [flang] compiler crashes in OptimizedBufferizationPass when dot_product is used inside parallel region
        </td>
    </tr>

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

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

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

<pre>
    The issue is observed when compiling cp2k.

A reproducer is here:
 SUBROUTINE mysub()
      INTEGER  :: ns,  ne
      REAL(KIND=8), ALLOCATABLE, DIMENSION(:, :, :)     :: ar1, ar2
      REAL(KIND=8), DIMENSION(20)          :: d

!$OMP PARALLEL PRIVATE(n,ns,ne,ar1,ar2)
         d(ns:ne) = &
 (/(DOT_PRODUCT(ar1(:, n, n), ar2(:, n, n)),n=ns, ne)/)
!$OMP END PARALLEL
   END SUBROUTINE

$flang -O1 -fopenmp tm1.f90
flang-20: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
flang: /home/shivaram/llvm_trunk/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1289: ReferenceT llvm::detail::indexed_accessor_range_base<DerivedT, BaseT, T, PointerT, ReferenceT>::operator[](size_t) const [with DerivedT = mlir::OperandRange; BaseT = mlir::OpOperand*; T = mlir::Value; PointerT = mlir::Value; ReferenceT = mlir::Value; size_t = long unsigned int]: Assertion `Index < size() && "invalid index for value range"' failed.

at -O0 the testcase compiles. at O1 and above, the crash is observed.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVc2S2jgQfhpx6YKy24bBBw4Gwxa1BFOEZI-UsNtYG1tySTJJ5um3JEOGmd3UchCy-uuvf9Td4saIqyRasOmSTbMR722t9MLU4sY1bznXXI0uqvy5ONUEwpjeraAuhvSNSvhek4RCtZ1ohLxC0eG3CQsyFqTDmoKmTquyL0g7xZo0seguhM9flsf8y2m7X0P70_QXhnOGyV3of9v9af3H-gjglKIUpGG4ApD0DDqu0x3D-Z_bfcaizFPgCtLdLl-lp3S5W7vPbPtpvf-8zffOSJS6o-e_xDPdrXAdOgHX-P9mnnkxeBA9s5XPCWEYMozzTwc4pMd0t1vv4HDcfk1Pa4ZzyXDlI5TEcDV44Zx4nxMAKB3YsCh1wARYlAHD2R3ks7hhOM_y0_lwzLMvqxPDuad7hC7vS_KI878kTihZlA1J96Y8cfIxlPU--xXOL0_d4dsFv89BXDVcXmGchzCuVEey7cC24aRKggHi5WMMXP6-cy2FvLpt3pH8dADTd53SFoSEgUgYMFY0DdCPjrRoSVreAJsux389n4xVZ4WSbJo9WXG8DDe1aonh5lH5DDdNc2vPVvfy2_1j3Gn1NxX2_slwI2TR9CW9HaTZieHm82m3_mE1N5OaRWmI88QZOVJFmmRBJ_BoXx0lWS6aYS9kST-oPPOiIGOUPmsur3S-cEMsWmWkxY3Kk7uLJTfkN345KCEtab9_M8Ki9UCrOtLcKj20OMO5Ea90tq5wCiWNdXn6LmwNDwu-ntpG6EE_d_qyPDpnWLQcjP8Lc0cxTB3mo_wrb3qv_PD1d_KnJP0GMXjvpY2SV-ilH2ElCGldfFEKqTGk3U0DmwVbl1Vg0cprDiPGdwvOgCEKeeONcNoOVikNN2cJfO4ZIsMXqLhoqHw32LiFcR6ArQksGVtwQ_c5SGYC3EIeApcl8Iu6uWb2yEJzUz_PzzvlqFxEZRIlfESL8CXCMAheYhzVi0tSvWBRhkUZTDGu-IwXSRIFl4DP4qqiYiQWGGAchhiEYTCNcXKhhBfTMqYKKZ6WxOKAWi6aiSu5idLXkR_iizCcJdN41PALNcZPf8ShHRDdQ6AXvuIv_dWwOGiEseaNwgrb-Cdj0Jhmj9D1ECIZ15p5Z0UrXqlc9lVFWrxydyUHbszwbJTKnoe3wbqc9MbfoRElQcc1bxpqQNNVKDnqdbOore2MH1IbhpursHV_mRSqfWu-Dz3qAzUMN_dYbwv8JwAA__9V5xCm">